Sdílet prostřednictvím


Analýza řetězce (LINQ to XML)

Tento článek ukazuje, jak analyzovat řetězec pro vytvoření stromu XML v jazyce C# a v jazyce Visual Basic.

Příklad

Následující kód jazyka C# ukazuje, jak analyzovat řetězec 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);

Řetězec v jazyce Visual Basic můžete parsovat podobným způsobem. Je ale efektivnější používat literály XML, jak je znázorněno v následujícím kódu, protože literály XML netrpí stejnými sankcemi za výkon jako analýza XML z řetězce.

Pomocí literálů XML můžete jednoduše zkopírovat a vložit XML do programu jazyka Visual Basic.

Poznámka:

Analýza textu nebo načtení dokumentu XML z textového souboru je méně efektivní než funkční konstrukce. Pokud inicializujete strom XML z kódu, trvá méně času procesoru, než analyzovat 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>

Kořenový Contacts uzel má dva Contact uzly. Pokud chcete získat přístup k určitým datům v parsované xml, použijte metodu XElement.Elements(), která v tomto případě vrátí podřízené prvky kořenového Contacts uzlu. Následující příklad vytiskne první Contact uzel do konzoly:

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

Viz také