Java XML Dom文档GetElementsByTagnames返回空节点列表
以下是我的XML文档的外观-Java XML Dom文档GetElementsByTagnames返回空节点列表,java,xml,dom,xml-parsing,xmldom,Java,Xml,Dom,Xml Parsing,Xmldom,以下是我的XML文档的外观- <Key1> <ns3:a>true</ns3:a> <ns3:b>1.0</ns3:b> <ns3:c> <ns3:north>13</ns3:north> <ns3:south>113</ns3:south> <
<Key1>
<ns3:a>true</ns3:a>
<ns3:b>1.0</ns3:b>
<ns3:c>
<ns3:north>13</ns3:north>
<ns3:south>113</ns3:south>
<ns3:west>114</ns3:west>
<ns3:east>172</ns3:east>
</ns3:c>
</Key1>
<Key2>
<ns3:SubKey>
<ns3:a>Hello World</ns3:a>
<ns3:b>0.9</ns3:b>
<ns3:c>
<ns3:north>99</ns3:north>
<ns3:south>17</ns3:south>
<ns3:west>65</ns3:west>
<ns3:east>11</ns3:east>
</ns3:c>
</ns3:SubKey>
</Key2>
当tagName=“a”时,getAllNodes返回的节点列表为空。但是,如果我尝试domDocument.getElementsByTagName(标记名),我会得到预期的2个元素列表。结果表明我需要启用dbFactory.setNamespaceAware(true) 结果表明我需要启用dbFactory.setNamespaceAware(true) 您的xml格式是否正确,名称空间声明是否正确?是的。事实证明我需要启用dbFactory.setNamespaceAware(true);您的xml格式是否正确,名称空间声明是否正确?是的。事实证明我需要启用dbFactory.setNamespaceAware(true);
private Document domDocument;
public XmlDomParser(byte[] inputByteFile) {
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder documentBuilder = dbFactory.newDocumentBuilder();
domDocument = documentBuilder.parse(new ByteArrayInputStream(inputByteFile));
} catch (ParserConfigurationException | SAXException | IOException e) {
e.printStackTrace();
}
}
public NodeList getAllNodesByTagName(String tagName) {
return domDocument.getElementsByTagNameNS("*",tagName);
}