如何从xml命名空间中获取节点名称

时间:2015-12-04 06:13:47

标签: java xml xpath

我有XML的XPath,其结构类似于

 <Statement xsi:type="conditionStatement">
    <Id>CONDITION_0001</Id>
    <Bounds>
        <xValue>13</xValue>
        <yValue>145</yValue>
        <Height>402</Height>
        <Width>513</Width>
    </Bounds>
.........
.........
</statement>

Xpath将我带到xsi:type。但是当我试图得到节点的名称是“语句”时,它会变为空。

我的代码是: -

nodeList = (NodeList) xPath.compile(xPathSrcFile).evaluate(xmlDocument, XPathConstants.NODESET);
for (int i = 0; i < nodeList.getLength(); i++) {
nodeList.item(i).getParentNode();
}

对于其他情况,代码工作得很好但是当它到达“xsi”时,代码抛出了nullpointer异常。

需要一些帮助才能从中获取节点名称。

2 个答案:

答案 0 :(得分:0)

试试这个

NodeList nodeList = null;
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
InputStream inputStream= new FileInputStream(file);//xmlDocument as file
Reader reader = new InputStreamReader(inputStream,"ISO-8859-1");
InputSource is = new InputSource(reader);
is.setEncoding("ISO-8859-1");
Document doc = db.parse(is);
Element docEle = doc.getDocumentElement();
nodeList = docEle.getElementsByTagName("Statement");

答案 1 :(得分:0)

1您的XML文件不正确:

以Statement

开头

以/ statement

结尾

2你需要在root标签:

&LT; root xmlns:xsi =&#34; http://www.w3.org/2001/XMLSchema-instance" &GT;

3获取你的标签名称,使用: nodeList.item(ⅰ).getTagName();

4你的Xpath是什么?