0
我有一個使用名稱空間的XML文檔$books
,並且我嘗試使用類似$ns = New-Object System.Xml.XmlNamespaceManager($books.NameTable)
的東西來創建XML名稱空間管理器。儘管如此,我不確定自己做錯了什麼。我試圖用SelectSingleNode()
來搜索我需要的特定節點的XML文檔,但是我所有的XPath查詢都返回null。命名空間問題 - 所有XPath查詢返回null
這裏有點XML文檔:
<ernm:NewReleaseMessage xmlns:ernm="http://ddex.net/xml/ern/341" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" LanguageAndScriptCode="en" MessageSchemaVersionId="/ern/341" xs:schemaLocation="http://ddex.net/xml/ern/341 http://ddex.net/xml/ern/341/release-notification.xsd">
<MessageHeader>
<MessageId>123123</MessageId>
<MessageRecipient>
<PartyId>567567</PartyId>
<PartyName>
<FullName>John Smith</FullName>
</PartyName>
</MessageRecipient>
</MessageHeader>
</ernm:NewReleaseMessage>
而且,這裏有點什麼,我已經爲了到目前爲止已經試過讓SelectSingleNode()
正常工作:
[xml]$books = Get-Content xmlpath.xml
$ns = New-Object System.Xml.XmlNamespaceManager($books.NameTable)
$ns.AddNamespace("ns", $books.DocumentElement.NamespaceURI)
$books.SelectSingleNode("//newreleasemessage", $ns) #returns null
$books.SelectSingleNode("//ns:newreleasemessage", $ns) #returns null
$books.SelectSingleNode("//ernm:newreleasemessage", $ns) #returns null
$books.SelectSingleNode("//xmlns:newreleasemessage", $ns) #returns null
$books.SelectSingleNode("//xml:newreleasemessage", $ns) #returns null
我已經也嘗試了其他節點,而不是newreleasemessage
,它仍然回到空白,我只是想提供一些我嘗試過的例子。在這裏使用命名空間的正確方法是什麼?
甜心主我覺得很蠢。謝謝,讓你滿意。爲什麼沒有在每一個xpath簡介的頂部貼上!? –
因爲對於那些花了近幾年的時間寫出不區分大小寫的語言的人來說,這只是一個問題,而他們是少數。 –