0

たとえば、ボタンのクリック イベントから URL (XML ページ) を開き、WebBrowser コントロールを使用して解析せずに XML ドキュメントの内容を読み取るにはどうすればよいでしょうか。

4

3 に答える 3

1

と LINQ の使用に加えてXDocument、他の人が示唆しているように、他にも 2 つの一般的なソリューションがあります。1 つはXmlDocumentXPath を使用する方法で、もう 1 つは 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
于 2012-08-10T21:02:24.960 に答える
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 &を取得します。urlreport

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 に答える
0

XDocumentを使用して にロードしXDocument.Loadます。

これによりドキュメントが解析されるため、LINQ to XML を使用してクエリを実行できます。

于 2012-08-10T17:59:49.283 に答える