Xpath-查找特定元素,打印该节点的所有元素
给定元素的以下XpathXpath-查找特定元素,打印该节点的所有元素,xpath,xml-namespaces,xmllint,Xpath,Xml Namespaces,Xmllint,给定元素的以下Xpath /std:Batch/BatchSection/ContractPartner/Contractor/Contract/contractNumber 如何打印节点契约的所有子元素 其中sequenceNumber=12345 我试过了 xmllint --xpath "string(/std:Batch/BatchSection/ContractPartner/Contractor/Contract/contractNumber[contractNumber
/std:Batch/BatchSection/ContractPartner/Contractor/Contract/contractNumber
如何打印节点契约的所有子元素
其中sequenceNumber=12345
我试过了
xmllint --xpath "string(/std:Batch/BatchSection/ContractPartner/Contractor/Contract/contractNumber[contractNumber='12345'])" test.xml
但是,这是一个无效的XPath表达式。如何解决这个问题
输入示例:
<std:Batch xmlns:std="http://www.test.com/contractBatch" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<year>2020</year>
<batchType>3</batchType>
<runDate>2020-04-11</runDate>
<text>Datatest</text>
<jobInfo>Test</jobInfo>
<BatchSection>
<addedAtDate>2020-04-11</addedAtDate>
<ContractPartner>
<contractDealerAG>44444</contractDealerAG>
<contractorType/>
<isoCountry>NL</isoCountry>
<language>EN</language>
<Contractor>
<contractor>44444</contractor>
<Contract>
<contractor>44444</contractor>
<sequenceNumber>12345</sequenceNumber>
<info1>abcd</info1>
</Contract>
</Contractor>
</ContractPartner>
</BatchSection>
</std:Batch>
2020
3.
2020-04-11
数据测试
试验
2020-04-11
44444
NL
EN
44444
44444
12345
abcd
所需输出(其中sequenceNumber=12345):
44444
12345
abcd
我假设您指的是sequenceNumber,根据xml示例,如果是这种情况,那么您可能需要执行以下操作以返回节点契约:
xmllint --xpath "//sequenceNumber[.="12345"]/.." test.xml
不幸的是,您必须处理可怕的名称空间。。。试着这样做:
xmllint --xpath "//*[local-name()='Contract'] [.//*[local-name()='sequenceNumber'][./text()='12345']]" test.xml
看看它是否有效。根据我的帖子的有效性编辑了我的帖子。这正是我需要的,效果非常好。谢谢处理名称空间意味着必须在每个元素前面加上前缀local-name()。@royskatt不幸的是,名称空间的含义远不止这些。您必须查找它(例如,在这里:)。
xmllint --xpath "//*[local-name()='Contract'] [.//*[local-name()='sequenceNumber'][./text()='12345']]" test.xml