如何剖析字串 (LINQ to XML)

本文說明如何剖析字串,以在 C# 和 Visual Basic 中建立 XML 樹狀結構。

範例

下列 C# 程式碼示範如何剖析 XML 字串:

XElement contacts = XElement.Parse(
    @"<Contacts>
        <Contact>
            <Name>Patrick Hines</Name>
            <Phone Type=""home"">206-555-0144</Phone>
            <Phone Type=""work"">425-555-0145</Phone>
            <Address>
            <Street1>123 Main St</Street1>
            <City>Mercer Island</City>
            <State>WA</State>
            <Postal>68042</Postal>
            </Address>
            <NetWorth>10</NetWorth>
        </Contact>
        <Contact>
            <Name>Gretchen Rivas</Name>
            <Phone Type=""mobile"">206-555-0163</Phone>
            <Address>
            <Street1>123 Main St</Street1>
            <City>Mercer Island</City>
            <State>WA</State>
            <Postal>68042</Postal>
            </Address>
            <NetWorth>11</NetWorth>
        </Contact>
    </Contacts>");
Console.WriteLine(contacts);

您可以使用類似的方式以在 Visual Basic 中剖析字串。 不過,使用 XML 常值更有效率 (如下列程式碼所示),因為 XML 常值不會和從字串剖析 XML 遭受相同的效能低落。

藉由使用 XML 常值,您只可以將您的 XML 複製並貼入您的 Visual Basic 程式中。

注意

從文字檔剖析文字或載入 XML 文件比功能結構沒有效率。 如果您正在從程式碼中初始化 XML 樹狀結構,使用功能結構比剖析文字所花的處理器時間少。

Dim contacts as XElement = _
    <Contacts>
        <Contact>
            <Name>Patrick Hines</Name>
            <Phone Type="home">206-555-0144</Phone>
            <Phone Type="work">425-555-0145</Phone>
            <Address>
            <Street1>123 Main St</Street1>
            <City>Mercer Island</City>
            <State>WA</State>
            <Postal>68042</Postal>
            </Address>
            <NetWorth>10</NetWorth>
        </Contact>
        <Contact>
            <Name>Gretchen Rivas</Name>
            <Phone Type="mobile">206-555-0163</Phone>
            <Address>
            <Street1>123 Main St</Street1>
            <City>Mercer Island</City>
            <State>WA</State>
            <Postal>68042</Postal>
            </Address>
            <NetWorth>11</NetWorth>
        </Contact>
    </Contacts>

Contacts 節點有兩 Contact 個節點。 若要存取剖析 XML 中的某個特定資料,請使用 XElement.Elements() 方法 (在此情況下會傳回根 Contacts 節點的子元素)。 下列範例會將第一個 Contact 節點列印到主控台:

List<XElement> contactNodes = contacts.Elements("Contact").ToList();
Console.WriteLine(contactNodes[0]);
Dim contactNodes As List(Of XElement) = contacts.Elements("Contact").ToList()
Console.WriteLine(contactNodes(0))

另請參閱