我正在尝试以下XPath:
//*[local-name()='SN102'][1]
使用XPathTester,我保存了场景 http://www.xpathtester.com/xpath/94ee37e08960247a7bf0619d38c52bee
并非每个HL1Loop都有一个SN102。
否则,我可以这样:
//*[local-name()='HLLoop1'][1]//*[local-name()='SN102']
我将示例数据简化为以下内容:
<ns0:X12_00401_856 xmlns:ns0="http://schemas.microsoft.com/BizTalk/EDI/X12/2006">
<ns0:HLLoop1>
<ns0:SN1>
<SN102>1</SN102>
<SN103>EA</SN103>
<SN108>AC</SN108>
</ns0:SN1>
</ns0:HLLoop1>
<ns0:HLLoop1>
<ns0:SN1>
<SN102>2</SN102>
<SN103>EA</SN103>
<SN108>AC</SN108>
</ns0:SN1>
</ns0:HLLoop1>
</ns0:X12_00401_856>
结果将返回所有节点,而不仅仅是第一个节点:
<?xml version="1.0" encoding="UTF-8"?>
<result>
<SN102>1</SN102>
<SN102>2</SN102>
</result>
如何仅选择第一个节点。看起来很简单,而且我确定我之前已经做过,但是今天不能工作。
我有一个“ Vendor Simulator”程序,该程序正在构建伪造的856数据发送回去,我想增加第一个数量只是为了强制执行一些错误处理逻辑。
答案 0 :(得分:3)
只需选择整个节点列表的第一个元素
(//*[local-name()='SN102'])[1]
如果存在多个同名兄弟姐妹,则原始查询//*[local-name()='SN102'][1]
将选择第一个SN102。