我在VB.Net中遇到了一个问题,即获取XML元素的Xpath,如下所示:
<Parent xmlns:"http://www.sample.com">
<body>
<Child xmlns:"http://www.notsample.com">
<element type="xyz"> ghghghghghg </element>
</Child>
</body>
</Parent>
我需要使用VB.Net NameSpace Manager
在上面的XML中使用“元素”的Xpath对于我已完成的“body”节点及其工作但我无法对“element”执行相同的操作:
dim bodynode as XMLNode=XML.SelectSingleNode(//ns:body,nsmngr)
其中“nsmngr”是由我创建的命名空间管理器,“ns”是“父节点”(“body”节点继承)的名称空间,添加到命名空间管理器中为“ns”
由于 基兰
答案 0 :(得分:1)
构建所需的XPath表达式有两种不同的方法:
NamespaceManager
定义第二个名称空间绑定,例如ns2:
绑定到http://www.notsample.com
。然后使用: /*/ns:body/ns2:Child/ns2:element
/*/*[name()='body']/*[name()='Child']/*[name()='element']
答案 1 :(得分:0)
给出以下xml:
<OuterElem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:test="http://www.w3.org/2001/XMLSchema-instance1" xmlns:test1="http://www.w3.org/2001/XMLSchema-instance1">
<test:parent>
<test1:child1>blabla1</test1:child1>
<test1:child2>blabla2</test1:child2>
<test:child2>blabla3</test:child2>
</test:parent>
<test1:child1>blabla4</test1:child1>
</OuterElem>
以下xslt(xslt 1.0)复制除“test:parent / test1:child1”之外的所有节点:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:test="http://www.w3.org/2001/XMLSchema-instance1" xmlns:test1="http://www.w3.org/2001/XMLSchema-instance1">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="test:parent/test1:child1"/>
</xsl:stylesheet>
结果将是:
<OuterElem xmlns:test="http://www.w3.org/2001/XMLSchema-instance1" xmlns:test1="http://www.w3.org/2001/XMLSchema-instance1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<test:parent>
<test1:child2>blabla2</test1:child2>
<test:child2>blabla3</test:child2>
</test:parent>
<test1:child1>blabla4</test1:child1>
</OuterElem>