从 XPath 查询中获取空值

我有这个 xml 文件:


<?xml version="1.0" encoding="UTF-8"?>


<iet:aw-data xmlns:iet="http://care.aw.com/IET/2007/12" class="com.aw.care.bean.resource.MessageResource">

  <iet:metadata filter=""/>

  <iet:message-resource>

    <iet:message>some message 1</iet:message>

    <iet:customer id="1"/>

    <iet:code>edi.claimfilingindicator.11</iet:code>

    <iet:locale>iw_IL</iet:locale>

  </iet:message-resource>

  <iet:message-resource>

    <iet:message>some message 2</iet:message>

    <iet:customer id="1"/>

    <iet:code>edi.claimfilingindicator.12</iet:code>

    <iet:locale>iw_IL</iet:locale>

  </iet:message-resource>

  .

  .

  .

  .


</iet:aw-data>

使用下面的这段代码,我正在了解数据并找到我需要的东西。


try {

    FileInputStream fileIS = new FileInputStream(new File("resources\\bootstrap\\content\\MessageResources_iw_IL\\MessageResource_iw_IL.ctdata.xml"));

    DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();

    builderFactory.setNamespaceAware(true); // never forget this!


    DocumentBuilder builder = builderFactory.newDocumentBuilder();

    Document xmlDocument = builder.parse(fileIS);

    XPath xPath = XPathFactory.newInstance().newXPath();


    String query = "//*[local-name()='message-resource']//*[local-name()='code'][contains(text(), 'account')]";

    NodeList nodeList = (NodeList) xPath.compile(query).evaluate(xmlDocument, XPathConstants.NODESET);


    System.out.println("size= " + nodeList.getLength());


    for (int i = 0; i < nodeList.getLength(); i++) {

        System.out.println(nodeList.item(i).getNodeValue());

    }

}

catch (Exception e){

    e.printStackTrace();

}

问题是我在 for 循环中打印时只得到空值,知道为什么会这样吗?


该代码需要返回一个节点列表,这些节点具有包含给定参数的代码和消息字段(与具有两个参数的 SQL 查询相同,它们之间带有 AND 运算符)


慕神8447489
浏览 345回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java