XML Java读取节点?
这是我第一次用Java处理XML文件 我有一个简单的XML文件:XML Java读取节点?,java,xml,nodes,Java,Xml,Nodes,这是我第一次用Java处理XML文件 我有一个简单的XML文件: <?xml version="1.0" encoding="UTF-8"?> <ItemList> <Item id="1"> <Clothes> <element1>Test Cloth</element1> <element2>1</e
<?xml version="1.0" encoding="UTF-8"?>
<ItemList>
<Item id="1">
<Clothes>
<element1>Test Cloth</element1>
<element2>1</element2>
<element3>true</element3>
<element4>1</element4>
<element5>100</element5>
<element6>4</element6>
<element7>false</element7>
</Clothes>
</Item>
</ItemList>
试验布
1.
真的
1.
100
4.
假的
爪哇:
InputStream is=ItemsLoader.class.getResourceAsStream(“ItemList.xml”);
DocumentBuilderFactory dbFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder=dbFactory.newDocumentBuilder();
Document doc=dBuilder.parse(is);
doc.getDocumentElement().normalize();
NodeList nList=doc.getElementsByTagName(“项目”);
对于(int i=0;i
我的输出是:
项目
text#
为什么我无法获取子节点?项的子节点应为“衣服”
谢谢你的支持 这是因为您的输入XML是缩进的,因此它有空格字符。
Item
的第一个子元素实际上是一个文本节点,包含Item
的
和之间存在的所有空格/制表符/换行符。此
元素有一个子元素:
它们是文本节点(),包含所有空格字符,直到下一个不同类型的节点。当您使用诸如getFirstChild()
之类的方法返回Node
时,您将获得第一个节点,无论其类型如何。您不能总是假定它将是一个元素,除非在解析源文档时已将元素之间的所有空格分条。它仍然可能不是文档节点,并且节点也算为子节点
访问子元素节点的安全方法是测试节点是否实际上是元素。您可以将通过方法获得的节点类型与节点
界面中表示节点类型的常数进行比较,并跳过非元素的节点
if(node.getNodeType() == Node.ELEMENT_NODE) {
// this is an element!
Element myElement = (Node)node;
}
您还可以使用其他API,如DOM4J或JDOM,其中包括返回子元素的额外方法、标准XPath API(其中可以获取元素的节点列表作为结果)或标准DOM方法(例如可以从上下文元素引用中调用并从子树中获取所有子元素)
在您的程序中,您可以通过提取getChildNodes()
节点列表上的迭代,并获取节点类型与node.element\u node
匹配的第一个节点,来检索元素节点
<Item id="1"><Clothes>...</Clothes></Item>
<Item id="1">
<Clothes>...</Clothes>
</Item>
<Item id="1">[#
#####]<Clothes>...</Clothes>[#]
</Item>
if(node.getNodeType() == Node.ELEMENT_NODE) {
// this is an element!
Element myElement = (Node)node;
}