[英]Using XPath and VB.NET to parse XML containing namespsaces
有幾個相關的問題,但沒有一個提供我需要的指導。
假設以下XML:
<?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" >
<entry>
<title type="text">This is the title</title>
<content>lorem ipsum</content>
</entry>
<entry>
<title type="text">This is the second title</title>
<content>lorem ipsum 2</content>
</entry>
</feed>
如果該文檔沒有名稱空間,則可以編寫如下代碼:
Public Sub ShowXML(XmlText As String)
Dim doc As New XmlDocument
doc.LoadXml(XmlText)
For Each Entry As XmlNode In doc.SelectNodes("//entry")
Console.WriteLine(Entry.SelectSingleNode("title").InnerText)
Next
End Sub
由於存在命名空間,因此這是不可能的。 這是我最近的嘗試:
Public Sub ShowXML(XmlText As String)
Dim doc As New XmlDocument
doc.LoadXml(XmlText)
Dim nsmgr As New XmlNamespaceManager(doc.NameTable)
nsmgr.AddNamespace("rss", "http://www.w3.org/2005/Atom")
For Each Entry As XmlNode In doc.SelectNodes("//rss:entry")
Console.WriteLine(Entry.SelectSingleNode("/rss:title").InnerText)
Next
End Sub
獲得“標題”的正確XPath語法是什么?
為什么這是與其他類似主題不同的問題的原因:
我不是在尋找一種剝離名稱空間的解決方案。 我想了解他們。 謝謝。
內部XPath /rss:title
的前導/
表示此搜索應從文檔頂部開始,而不管當前您是否在子節點上。
相反,只需使用rss:title
,您將獲得您所需要的節點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.