我想使用Java在XML中追加一个属性。例如:如何将属性添加到Java中的现有XML元素?
<employee>
<details name="Jai" age="25"/>
<details name="kishore" age="30"/>
</employee>
它要添加weight
到它(假设它被计算并且然后响应所附)。我如何将它附加到所有项目?
<details name="Jai" age="25" weight="55"/>
我想使用Java在XML中追加一个属性。例如:如何将属性添加到Java中的现有XML元素?
<employee>
<details name="Jai" age="25"/>
<details name="kishore" age="30"/>
</employee>
它要添加weight
到它(假设它被计算并且然后响应所附)。我如何将它附加到所有项目?
<details name="Jai" age="25" weight="55"/>
import org.w3c.dom.*;
import java.io.*;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;
public class AddAndPrint {
public static void main(String[] args) {
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.parse("/path/to/file.xml");
NodeList employees = document.getElementsByTagName("employee");
for (Node employee : employees) {
for (Node child : employee.getChildNodes() {
if ("details".equals(child.getNodeName()) child.setAttribute("weight", "150");
}
}
try {
Source source = new DOMSource(doc);
StringWriter stringWriter = new StringWriter();
Result result = new StreamResult(stringWriter);
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer();
transformer.transform(source, result);
System.out.println(stringWriter.getBuffer().toString());
} catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
}
}
}
谢谢埃里克它工作.. – Jeba 2010-07-22 16:55:31
你能标记我的答案接受然后呢? – 2010-07-22 23:44:43
这里是一个快速的解决方案基于JDOM:
public static void main(String[] args) throws JDOMException, IOException {
File xmlFile = new File("employee.xml");
SAXBuilder builder = new SAXBuilder();
Document build = builder.build(xmlFile);
XPath details = XPath.newInstance("//details");
List<Element> detailsNodes = details.selectNodes(build);
for (Element detailsNode:detailsNodes) {
detailsNode.setAttribute("weight", "70"); // static weight for demonstration
}
XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat());
outputter.output(build, System.out);
}
首先,我们建立了一个文件(SAXBuilder
),接下来我们创建一个细节节点的XPath表达式,那么我们迭代通过该表达式的元素并添加weight属性。
最后两行只是验证它的白魔法:-)
谢谢Andreas_D,虽然我使用DOM进行XML解析.. – Jeba 2010-07-22 16:55:12
你已经在使用一个库来解析这个XML并把它变成对象或数据结构? 你的问题的任何答案将取决于你已经使用的。 – 2010-07-05 18:45:25