如何从按钮的单击事件中打开一个URL(这是一个XML页面),并读取XML文档的内容,而无需使用WebBrowser控件进行分析?如何在没有WebBrowser控件的情况下解析VB.net中的XML文档?
0
A
回答
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
0
使用XDocument.Load
将其加载到XDocument
中。
这将为您解析文档,以便您可以使用LINQ to XML来查询它。
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
相关问题
- 1. 在没有文件下载对话框的情况下在WebBrowser控件中打开办公文档?
- 2. 从webbrowser控件解析XML?
- 3. VB.Net:解析XML文档
- 4. 如何在没有UI的情况下创建WebBrowser控件(ActiveX/IWebBrowser2)?
- 5. vb.net - webbrowser获取xml文档
- 6. 如何在没有jQuery的情况下解析JSON
- 7. 在不使用tableview控制器的情况下解析本地xml文件
- 8. 如何在没有文档的情况下学习CouchDB API?
- 9. 在没有文本解析的情况下初始化in_addr_t
- 10. 在没有附加库的情况下解析标准C/C++中的XML
- 11. Java的File.getAbsoluteFile()文档如何在没有上下文的情况下引用“this”?
- 12. 如何在没有URL的情况下隐藏图像控件?
- 13. 如何解析Blackberry中的xml文档?
- 14. 如何解析XML文档
- 15. 如何解析XML文档?
- 16. 如何在没有XML的情况下将格式化的DataTable写入文件?
- 17. 如何在没有依赖关系的情况下在C++中创建webbrowser?
- 18. 在没有解压缩的情况下包含ant build xml内联jar文件?
- 19. 有没有办法在没有DOM的情况下写入/删除xml文件?
- 20. 如何在文档中下载并保存xml,然后如何从文档中解析xml文件?
- 21. Classic ASP中解析XML文件的内存占用情况?
- 22. 如何在没有pdb文件的情况下进行调试?
- 23. 如何在没有json文件的情况下使用JSON?
- 24. 如何在没有xib文件的情况下集成iAD
- 25. 如何在没有Feature.xml文件的情况下卸载功能?
- 26. 如何在没有visual studio的情况下编译C文件
- 27. 如何在没有adb的情况下拉取apk文件?
- 28. 如何在没有文件名的情况下运行javascript
- 29. 如何在没有构建文件的情况下执行Ant
- 30. 如何在没有dll的情况下访问配置文件?
请问您可以稍微详细一点吗?我无法理解您的问题 – Shyju 2012-08-10 17:59:49
您的问题标题包含不必要的细节。你真的认为,根据你处理的事件或你使用的是哪种语言,答案会有所不同。 – 2012-08-10 18:01:03