【发布时间】:2016-08-18 06:35:03
【问题描述】:
我正在尝试从 java 文件修改 xml 文件的一些参数。在所有帖子中,我发现人们会修改这些参数以通过标签名称搜索它,但在我的情况下它不起作用。
我的 xml 文件的一个例子是:
<?xml version="1.0" encoding="UTF-8"?>
<comp>
<params>
<param name="id">1</param>
<param name="type">aaaa</param>
<param name="bus">123</param>
</params>
</comp>
如何通过“名称”访问参数?
最后我的java代码是:
public void modifyXml(){
String path = "C:\\Workspace\\Project\\data.xml";
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.parse(path);
Node comp = doc.getFirstChild();
Node params = doc.getElementsByTagName("params").item(0);
loadParams(params);
}
private void loadParams(Node params) {
NodeList list = params.getChildNodes();
for (int i = 0; i < list.getLength(); i++) {
Node url = list.item(i);
String nodeName = url.getNodeName();
NamedNodeMap attributes = url.getAttributes();
//System.out.println(attributes.item(i));
if (nodeName.equalsIgnoreCase("param") && url.getFirstChild()!=null) {
ServerProperties.getExternalParamsMap().put(attributes.getNamedItem("name").getNodeValue(), url.getFirstChild().getNodeValue());
System.out.println((String) url.getFirstChild().getNodeName());
System.out.println(url.getFirstChild().getNodeValue());
}
}
}
它打印节点的值而不是参数名称。参数名称显示如下:“#text”
谢谢!
问候!!
埃里克·P.
【问题讨论】:
-
不要用 DOM 手写。将 XPath 与以下表达式一起使用:
//param[@name="id"]、//param[@name="type"]、//param[@name="bus"]等。