共用方式為


如何:使用 LINQ 轉換 XML (Visual Basic)

XML 常值可讓您輕鬆地從一個來源讀取 XML,並將其轉換為新的 XML 格式。 您可以利用 LINQ 查詢來擷取要轉換的內容,或將現有文件中的內容變更為新的 XML 格式。

本主題中的範例會將內容從 XML 來源文件轉換為 HTML,以在瀏覽器中檢視。

注意

在下列指示的某些 Visual Studio 使用者介面項目中,您的電腦可能會顯示不同的名稱或位置: 您所擁有的 Visual Studio 版本以及使用的設定會決定這些項目。 如需詳細資訊,請參閱將 Visual Studio IDE 個人化

轉換 XML 文件

  1. 在 Visual Studio 中,使用主控台應用程式專案範本建立新的 Visual Basic 專案。

  2. 按兩下專案中建立的 Module1.vb 檔案,以修改 Visual Basic 程式碼。 將下列程式碼新增至 Module1 模組的 Sub Main。 此程式碼會將來源 XML 文件建立為 XDocument 物件。

    Dim catalog =
      <?xml version="1.0"?>
        <Catalog>
          <Book id="bk101">
            <Author>Garghentini, Davide</Author>
            <Title>XML Developer's Guide</Title>
            <Price>44.95</Price>
            <Description>
              An in-depth look at creating applications
              with <technology>XML</technology>. For
              <audience>beginners</audience> or
              <audience>advanced</audience> developers.
            </Description>
          </Book>
          <Book id="bk331">
            <Author>Spencer, Phil</Author>
            <Title>Developing Applications with Visual Basic .NET</Title>
            <Price>45.95</Price>
            <Description>
              Get the expert insights, practical code samples,
              and best practices you need
              to advance your expertise with <technology>Visual
              Basic .NET</technology>.
              Learn how to create faster, more reliable applications
              based on professional,
              pragmatic guidance by today's top <audience>developers</audience>.
            </Description>
          </Book>
        </Catalog>
    

    操作說明:從檔案、字串或串流載入 XML

  3. 在用以建立來源 XML 文件的程式碼之後,新增下列程式碼以從物件擷取所有 <Book> 元素,並將其轉換為 HTML 文件。 <Book> 元素清單是使用 LINQ 查詢來建立,此查詢會傳回包含已轉換 HTML 的 XElement 物件集合。 您可以使用內嵌運算式,以新的 XML 格式放置來源文件中的值。

    產生的 HTML 文件會使用 Save 方法寫入檔案。

    Dim htmlOutput =
      <html>
        <body>
          <%= From book In catalog.<Catalog>.<Book>
              Select <div>
                       <h1><%= book.<Title>.Value %></h1>
                       <h3><%= "By " & book.<Author>.Value %></h3>
                        <h3><%= "Price = " & book.<Price>.Value %></h3>
                        <h2>Description</h2>
                        <%= TransformDescription(book.<Description>(0)) %>
                        <hr/>
                      </div> %>
        </body>
      </html>
    
    htmlOutput.Save("BookDescription.html")
    
  4. Module1Sub Main 之後,新增方法 (Sub) 以將 <Description> 節點轉換為指定的 HTML 格式。 此方法是由上一個步驟中的程式碼所呼叫,並用來保留 <Description> 元素的格式。

    此方法會以 HTML 取代 <Description> 元素的子元素。 ReplaceWith 方法會用來保留子元素的位置。 <Description> 元素的已轉換內容會包含在 HTML 段落 (<p>) 元素中。 Nodes 屬性會用來擷取 <Description> 元素的已轉換內容。 這可確保子元素會包含在已轉換的內容中。

    Module1Sub Main 之後新增下列程式碼。

    Public Function TransformDescription(ByVal desc As XElement) As XElement
    
      ' Replace <technology> elements with <b>.
      Dim content = (From element In desc...<technology>).ToList()
    
      If content.Count > 0 Then
        For i = 0 To content.Count - 1
          content(i).ReplaceWith(<b><%= content(i).Value %></b>)
        Next
      End If
    
      ' Replace <audience> elements with <i>.
      content = (From element In desc...<audience>).ToList()
    
      If content.Count > 0 Then
        For i = 0 To content.Count - 1
          content(i).ReplaceWith(<i><%= content(i).Value %></i>)
        Next
      End If
    
      ' Return the updated contents of the <Description> element.
      Return <p><%= desc.Nodes %></p>
    End Function
    
  5. 儲存您的變更。

  6. 按 F5 以執行程式碼。 產生的已儲存文件會如下所示:

    <?xml version="1.0"?>
    <html>
      <body>
        <div>
          <h1>XML Developer's Guide</h1>
          <h3>By Garghentini, Davide</h3>
          <h3>Price = 44.95</h3>
          <h2>Description</h2>
          <p>
            An in-depth look at creating applications
            with <b>XML</b>. For
            <i>beginners</i> or
            <i>advanced</i> developers.
          </p>
          <hr />
        </div>
        <div>
          <h1>Developing Applications with Visual Basic .NET</h1>
          <h3>By Spencer, Phil</h3>
          <h3>Price = 45.95</h3>
          <h2>Description</h2>
          <p>
            Get the expert insights, practical code
            samples, and best practices you need
            to advance your expertise with <b>Visual
            Basic .NET</b>. Learn how to create faster,
            more reliable applications based on
            professional, pragmatic guidance by today's
            top <i>developers</i>.
          </p>
          <hr />
        </div>
      </body>
    </html>
    

另請參閱