我不明白如何使用java获取子节点解析xml文件。例如我有这样的代码:
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class Parser {
public static void main(String args[]) {
try{
File stocks = new File("Stocks.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(stocks);
doc.getDocumentElement().normalize();
NodeList nodes = doc.getElementsByTagName("stock");
Node nodez = nodes.item(1);
String s = nodez.getFirstChild().getNodeName(); //outputs #text?
System.out.println(s);
//If I try this
String s = nodez.getNodeName(); //outputs 'stock'
} catch (Exception e) {
e.printStackTrace();
}
}
}
因此,如果我尝试输出当前节点名称,它会正确输出,但如果我尝试输出下一个子节点名称,它只会输出#text。
如何正确输出我想要的任何节点?我以为我可以使用 getFirstChild
或 getNextSibling
方法,但似乎我做错了什么?
您可以使用此链接找到 xml 文件:
http://javarevisited.blogspot.com/2011/12/parse-xml-file-in-java-example-tutorial.html
最佳答案
元素“stock”包含文本,该文本作为第一个子元素返回。您可以使用以下内容:
System.out.println(((Element) nodez).getElementsByTagName("symbol").item(0).getNodeName());
// get all nodes
NodeList nl=((Element) nodez).getElementsByTagName("*");
for (int i = 0; i < nl.getLength(); i++) {
System.out.println(nl.item(i).getNodeName());
}
关于Java - NodeList无法获取Childnode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19863289/