我有这个 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 运算符)
添加回答
举报
0/150
提交
取消