java - 如何将值插入到 xml 标记中

标签 java xml domparser

我有以下 xml 文件:

<?xml version="1.0"?>
<SMS>
    <ALERTS>
        <SNO>1</SNO> 
        <MOBILENUMBER>1234567890</MOBILENUMBER> 
        <TEXT>HI</TEXT> 
        <TIME></TIME> 
        <RESPONSEID></RESPONSEID>
    </ALERTS>       
</SMS>

我想将字符串值插入 XML 标记 (RESPONSEID)。我尝试过 setTextContent 和 setNodeValue 方法,但它们对我不起作用。

下面是我的小程序:

public void selectRecords() throws SQLException
{
    File file = new File("E:\\Workspace\\netbeans-workspace\\DOM_Parser_Sample\\MyXMLFile1.xml");
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    DocumentBuilder db = dbf.newDocumentBuilder();
    Document doc = db.parse(file);
    doc.getDocumentElement().normalize();
    NodeList nodeList = doc.getElementsByTagName("ALERTS");
    for (int s = 0; s < nodeList.getLength(); s++) 
    {
    Node firstNode = nodeList.item(s);

        if (firstNode.getNodeType() == Node.ELEMENT_NODE) 
        {
            Element eElement = (Element) firstNode;
            BufferedReader in = new BufferedReader(new InputStreamReader(httpcon.getInputStream()));
            StringBuffer response = new StringBuffer();
            while ((inputLine = in.readLine()) != null) 
            {
                    res = response.append(inputLine).toString();
            }
            in.close();
           NodeList responseList = eElement.getElementsByTagName("RESPONSEID").item(0).getChildNodes();
           responseList.item(0).setTextContent(res);
        }
    }
}

最佳答案

检查节点名称和值的示例代码:希望这能帮助您解决问题。

    Node alertNode = doc.getElementsByTagName("ALERTS").item(0);
    NodeList nodeList = alertNode.getChildNodes();
    for (int i = 0; i < nodeList.getLength(); i++) {

        Node node = nodeList.item(i);
        System.out.println("NodeName:" + node.getNodeName() + ":TextContent:" + node.getTextContent());
        if ("RESPONSEID".equalsIgnoreCase(node.getNodeName())) {
            node.setTextContent("RESPONSEID-1");
        }
    }

/** 只需验证设置值即可 */

    Node resNode = doc.getElementsByTagName("RESPONSEID").item(0);
    System.out.println("NodeName:" + resNode.getNodeName() + ":TextContent:" + resNode.getTextContent());

/** 将文件保存为MyXMLFile1-test.xml*/

    TransformerFactory transformerFactory = TransformerFactory.newInstance();
    Transformer transformer = transformerFactory.newTransformer();
    DOMSource source = new DOMSource(doc);
    StreamResult result = new StreamResult(new File("MyXMLFile1-test.xml"));
    transformer.transform(source, result);

您只需要访问“RESPONSEID”节点并设置文本内容即可。

关于java - 如何将值插入到 xml 标记中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28803444/

相关文章:

java - 如何使用 java 根据 DTD 验证 XML?

javascript - DomParser parseFromString 删除节点

java - 解析 xml 文件中引用 xml 文件的实体 (android)

java - 在哪里编写项目级 JavaDocs

java - 如何在没有所有子节点文本的情况下获取直接元素的文本

c# - 如何在解析 xml (c#) 时进行操作(avg、cnt 等)?

Javascript:XMLDocument 迭代

java - 无法多次匹配两次提交之间的代码

java - 在 java.sql.Date 中设置 October 14 ,1582 失败

java - Jaxb - 如何避免根元素出现 "xsi:"