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