这是我的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中获取节点,我不知道在获得节点后如何添加或编辑值。
答案 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 method。 Element
对此进行了扩展,因此您首先需要获取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>");