在java中设置XML中的属性/节点

时间:2011-10-27 14:32:53

标签: java xml dom xpath xml-parsing

这是我的XML:

<root>
   <A id='1'>
     <B>Blah</B>
     <C>Test</C>
   </A>
</root>

我想添加下面,所以我的最终XML会:

<root>
   <A id='1'>
     <B>Blah</B>
     <C>Test</C>
     <D>New value</D>
    </A>
</root>

我可以使用//A在XPath中获取节点,我不知道在获得节点后如何添加或编辑值。

3 个答案:

答案 0 :(得分:4)

DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
StringReader xml = new StringReader("<root><A id='1'><B>Blah</B><C>Test</C></A></root>");
Document doc = db.parse(new InputSource(xml));
XPathFactory xPathfactory = XPathFactory.newInstance();
XPath xpath = xPathfactory.newXPath();
XPathExpression expr = xpath.compile("//A");
Element element = doc.createElement("D");
element.setTextContent("new value");
NodeList nodes = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);
for(int i = 0; i < nodes.getLength(); i++) {  
    Node node = nodes.item(i);
    node.appendChild(element);
}

答案 1 :(得分:0)

从DOM检查Node接口的this methodElement对此进行了扩展,因此您首先需要获取A的元素。在Document实例或类中的其他合适方法上使用this method来创建所需的D元素,然后设置其内容。

答案 2 :(得分:0)

除了直接使用DOM API之外,您还可以使用jOOX,这是我创建的DOM的简单包装库:

// With css-style selectors
$(document).find("A").append("<D>New value</D>");

// With XPath
$(document).xpath("//A").append("<D>New value</D>");