用于检索 XML 没有命名空间和前缀的标记值的 XPath
XPath to retrive XML tag value without Namespace and prefix
我有以下 XML -
<d><m:properties xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
<d:AllTexts/>
<d:BomFlag/>
<d:OrderNumber>9489</d:OrderNumber>
<d:LineNumber>000000</d:LineNumber>
<d:VcFlag>Y</d:VcFlag>
<d:PricingFlag/>
<d:TextType>H</d:TextType>
<d:TextId>ZC01</d:TextId>
<d:TextLineNo>1</d:TextLineNo>
<d:TextLine>ecom header text 1</d:TextLine>
并尝试检索基于 TextId = ZC01 的 TextLine 节点列表 -
<TextLine>ecom header text1</TextLine>
当我将 xpath 应用为 --> //m:properties[d:TextId = 'ZC01']/d:TextLine
我得到的输出是 -
<d:TextLine xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ecom header text 1</d:TextLine>
如何删除前缀和命名空间?我尝试使用 local-name(),但没有用
可能用错了。
感谢您的帮助!
谢谢
菅田
XPath 是一种选择语言:它只能检索实际存在的节点,不能以任何方式更改它们。如果所选元素在原始中有前缀和命名空间,那么它在结果中也会有前缀和命名空间。
但是,您需要区分 XPath 选择的内容(节点)和结果的显示方式。这取决于评估 XPath 的应用程序。显示由 XPath 表达式选择的节点的两种流行方式是 (a) 通过将节点序列化为 XML (这是我们在您的情况下看到的),以及 (b) 通过显示所选节点的路径,例如 /d/m:properties/d:TextLine
。您还没有告诉我们您是如何计算 XPath 表达式或显示其结果的,您可以在此处进行选择。
但也许您应该考虑 XSLT 或 XQuery,它们(与 XPath 不同)允许您构建不同于原始内容的新 XML。
我有以下 XML -
<d><m:properties xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
<d:AllTexts/>
<d:BomFlag/>
<d:OrderNumber>9489</d:OrderNumber>
<d:LineNumber>000000</d:LineNumber>
<d:VcFlag>Y</d:VcFlag>
<d:PricingFlag/>
<d:TextType>H</d:TextType>
<d:TextId>ZC01</d:TextId>
<d:TextLineNo>1</d:TextLineNo>
<d:TextLine>ecom header text 1</d:TextLine>
并尝试检索基于 TextId = ZC01 的 TextLine 节点列表 -
<TextLine>ecom header text1</TextLine>
当我将 xpath 应用为 --> //m:properties[d:TextId = 'ZC01']/d:TextLine
我得到的输出是 -
<d:TextLine xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ecom header text 1</d:TextLine>
如何删除前缀和命名空间?我尝试使用 local-name(),但没有用 可能用错了。 感谢您的帮助!
谢谢 菅田
XPath 是一种选择语言:它只能检索实际存在的节点,不能以任何方式更改它们。如果所选元素在原始中有前缀和命名空间,那么它在结果中也会有前缀和命名空间。
但是,您需要区分 XPath 选择的内容(节点)和结果的显示方式。这取决于评估 XPath 的应用程序。显示由 XPath 表达式选择的节点的两种流行方式是 (a) 通过将节点序列化为 XML (这是我们在您的情况下看到的),以及 (b) 通过显示所选节点的路径,例如 /d/m:properties/d:TextLine
。您还没有告诉我们您是如何计算 XPath 表达式或显示其结果的,您可以在此处进行选择。
但也许您应该考虑 XSLT 或 XQuery,它们(与 XPath 不同)允许您构建不同于原始内容的新 XML。