例如,如何从按钮的单击事件打开 URL(这是一个 XML 页面)并读取 XML 文档的内容,而不使用 WebBrowser 控件来解析它?
问问题
5753 次
3 回答
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>
此代码将解析它并获取每个项目的title
& 。url
report
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
于 2012-08-10T18:04:42.120 回答
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>
然后你可以像这样使用 XPath 解析XmlDocument
和搜索它(其中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
于 2012-08-10T21:02:24.960 回答
0
将其加载到XDocument
中,使用XDocument.Load
.
这将为您解析文档,以便您可以使用 LINQ to XML 查询它。
于 2012-08-10T17:59:49.283 回答