2012-08-10 54 views
0

如何從按鈕的單擊事件中打開一個URL(這是一個XML頁面),並讀取XML文檔的內容,而無需使用WebBrowser控件進行分析?如何在沒有WebBrowser控件的情況下解析VB.net中的XML文檔?

+0

請問您可以稍微詳細一點嗎?我無法理解您的問題 – Shyju 2012-08-10 17:59:49

+0

您的問題標題包含不必要的細節。你真的認爲,根據你處理的事件或你使用的是哪種語言,答案會有所不同。 – 2012-08-10 18:01:03

回答

1

除了使用XDocument和LINQ之外,還有其他兩種常見的解決方案。一種是使用XmlDocument和XPath,另一種是使用XML序列化。舉例來說,如果你有以下的XML文檔:

<?xml version="1.0" encoding="utf-8" ?> 
<Books> 
    <Book Title="Book 1"> 
    <Author>Author 1</Author> 
    <Chapter>Chapter 1</Chapter> 
    <Chapter>Chapter 2</Chapter> 
    </Book> 
    <Book Title="Book 2"> 
    <Author>Author 1</Author> 
    <Chapter>Chapter 1</Chapter> 
    <Chapter>Chapter 2</Chapter> 
    </Book> 
</Books> 

然後,你可以用XmlDocument分析它,並通過它使用XPath這樣的(其中xml是含有上述XML字符串)搜索:

Dim doc As New XmlDocument() 
doc.LoadXml(xml) 
Dim authorOfBook1 As String = doc.SelectSingleNode("/Books/Book[@Title = 'Book 1']/Author").InnerText 
Dim booksByAuthor1 As XmlNodeList = doc.SelectNodes("/Books/Book[Author = 'Author 1']") 
'etc. 

或者,您可以使用序列通過加載XML文檔,首先,定義在某些類的文檔結構:

Public Class Books 
    <XmlElement("Book")> _ 
    Public Items As List(Of Book) 
End Class 

Public Class Book 
    <XmlAttribute()> _ 
    Public Title As String 

    <XmlElement("Author")> _ 
    Public Authors As List(Of String) 

    <XmlElement("Chapter")> _ 
    Public Chapters As List(Of String) 
End Class 

然後將XML反序列化爲該類型的對象:

Dim serializer As XmlSerializer = New XmlSerializer(GetType(Books)) 
Using reader As StringReader = New StringReader(xml) 
    Dim books As Books = CType(serializer.Deserialize(reader), Books) 
    'Analyze contents in books object 
End Using 
1

解析XML,您可以使用LINQtoXML庫(.NET Framework 3.5的起)

例如,如果你有以下格式的XML,

<rss> 
    <report name="rpt1"> 
    <title>AAA</title> 
    <image>some1</image> 
    </report> 
    <report name="rpt2"> 
    <title>BBB</title> 
    <image>some3333</image> 
</rss> 

此代碼將解析它並獲得每個report項目的title & url項目。

Dim path As String = "pathTosomexml.xml" 
Dim elm As XElement = XElement.Load(path) 
If elm IsNot Nothing Then 

    For Each page As var In elm.Elements("report") 
     Dim title = page.Element("title").Value 
     Dim url = page.Element("image").Value 

    Next 
End If 
相關問題