xpath - XPath NodeList 值为空
问题描述
使用以下数据,我尝试解析和处理日期值。
<Data>
<Data1 Study="R1979" MetaDataVersionOID="6713">
<Data2 Subject="4100">
<SData Event="SCN" key="WK1[1]">
<FormData Form="PEMD" FormKey="1">
<ItemData Item="PM" Value="1"/>
<ItemData Item="PE" Value="1"/>
<ItemData Item="DATE" Value="2020-01-01"/>
</FormData>
</SData>
</Data2>
</Data1>
<Data1 Study="R1979" MetaDataVersionOID="6713">
<Data2 Subject="4100">
<SData Event="WK1" key="WK1[1]">
<FormData Form="PEMD" Formkey="1">
<ItemData Item="PM" Value="1"/>
<ItemData Item="PE" Value="1"/>
<ItemData Item="DATE" Value="2019-12-18"/>
</FormData>
</SData>
</Data2>
</Data1>
</Data>
使用此代码节点值为 null 登陆日期为空:
strXPath =/Data/Data1/Data2[@Subject='4100']/SData/FormData[@Form='PEMD']/ItemData[@Item='DATE']
NodeList nodes = (NodeList) XPathUtil.getXPath().evaluate(strXPath, docODM, XPathConstants.NODESET);
for (int i = 0; i < nodes.getLength(); i++) {
logger.info("node " + i);
Node nodeElement = nodes.item(i);
logger.info("node value: " + nodeElement.getNodeValue());
String date = (String)XPathUtil.getXPath().evaluate("/ItemData/@Value", nodeElement, XPathConstants.STRING);
logger.info("date: " + date);
}
第一个 strXPath 产生这个:
Element='<ItemData Item="DATE" Value="2020-01-01"/>'
Element='<ItemData Item="DATE" Value="2019-12-18"/>'
使用此方法一次检索一个元素的日期值应该可以:
/ItemData/@Value
它在测试仪中确实如此。
Attribute='Value=2020-01-01'
但上面的节点值为空,日期为空,不知道为什么。
解决方案
我使用了 org.w3c.dom 中的 Node.getAttributes() 并且它有效。
推荐阅读
- jquery - jquery ajax上传的croppie图片不在提交的请求中
- c# - 详细视图asp.net mvc5中的外部值为空
- excel - 当我在不同位置打开 excel 文件时出现运行时错误“91” - VBA
- python - 在 Python 中过滤数据框以获取指定列中的 TRUE/FALSE 值
- python - 雅虎财经 API 是否开放?
- javascript - 如何排除 karma 中选定组件的 customHeaders?
- sql - 在 Teradata 中将字符串转换为日期的问题
- node.js - socket-io 出现“错误的握手方法”错误
- reactjs - React js在日期选择器中设置数据数组
- flutter - 如何正确加载页面以使其每次都能正常工作