Dela via


Så här parsar du en sträng (LINQ till XML)

Den här artikeln visar hur du parsar en sträng för att skapa ett XML-träd i C# och i Visual Basic.

Exempel

Följande C#-kod visar hur du parsar en XML-sträng:

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);

Du kan parsa en sträng i Visual Basic på ett liknande sätt. Det är dock mer effektivt att använda XML-literaler, som du ser i följande kod, eftersom XML-literaler inte drabbas av samma prestandapåföljder som att parsa XML från en sträng.

Genom att använda XML-literaler kan du bara kopiera och klistra in XML i Visual Basic-programmet.

Kommentar

Att parsa text eller läsa in ett XML-dokument från en textfil är mindre effektivt än funktionell konstruktion. Om du initierar ett XML-träd från kod tar det mindre processortid att använda funktionell konstruktion än att parsa text.

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>

Rotnoden Contacts har två Contact noder. Om du vill komma åt vissa specifika data i din parsade XML använder du metoden XElement.Elements(), som i det här fallet returnerar de underordnade elementen i rotnoden Contacts . I följande exempel skrivs den första Contact noden ut till konsolen:

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))

Se även