我很难过,希望我只是做了一件我可以轻松修复的蠢事。
我正在传递一个充满 XML 的字符串,即“XMLstring”。我想获取其中一个元素并在控制台上以“name = value”打印子节点。问题是控制台不断打印垃圾以及我不知道如何摆脱的元素名称。
无论如何,这段代码:
try {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
InputSource is = new InputSource();
is.setCharacterStream(new StringReader(XMLstring));
Document doc = db.parse(is);
NodeList nodes = doc.getElementsByTagName("client-details");
Node node = nodes.item(0);
NodeList client_details = node.getChildNodes();
for (int i = 0; i < client_details.getLength(); i++) {
System.out.println(client_details.item(i).getNodeName()+" = "+getTextContents(client_details.item(i)));
}
}
catch (Exception e) {
e.printStackTrace();
}
给我以下内容:
#text =
testing-mode = false
#text =
name = testman
#text =
age = 30
为什么要打印“#text =”?我该如何摆脱它?
如果有帮助,我正在使用 NetBeans。
最佳答案
您想改用 getNodeValue() :
System.out.println(client_details.item(i).getNodeValue()+" = "+getTextContents(client_details.item(i)));
如果你看in the table at the top of this page ,您会看到对于文本节点,getNodeName() 返回#text。
关于java - 如何停止 getNodeName() 并同时打印节点类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6217559/