簡體   English   中英

使用XPath和VB.NET解析包含名稱空間的XML

[英]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語法是什么?

為什么這是與其他類似主題不同的問題的原因:

  1. 其他大多數示例都是C#,並且我正在尋找VB.NET解決方案。
  2. 其他示例未解決從先前選擇的節點導航到節點的情況。

我不是在尋找一種剝離名稱空間的解決方案。 我想了解他們。 謝謝。

內部XPath /rss:title的前導/表示此搜索應從文檔頂部開始,而不管當前您是否在子節點上。

相反,只需使用rss:title ,您將獲得您所需要的節點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM