Jak analizować ciąg (LINQ to XML)
W tym artykule pokazano, jak przeanalizować ciąg w celu utworzenia drzewa XML w języku C# i w Visual Basic.
Przykład
Poniższy kod w języku C# pokazuje, jak przeanalizować ciąg 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);
Możesz przeanalizować ciąg w Visual Basic w podobny sposób. Jednak bardziej wydajne jest używanie literałów XML, jak pokazano w poniższym kodzie, ponieważ literały XML nie cierpią z powodu takich samych kar wydajności, jak analizowanie kodu XML z ciągu.
Używając literałów XML, możesz po prostu skopiować i wkleić kod XML do programu Visual Basic.
Uwaga
Analizowanie tekstu lub ładowanie dokumentu XML z pliku tekstowego jest mniej wydajne niż konstrukcja funkcjonalna. Jeśli inicjujesz drzewo XML z kodu, użycie konstrukcji funkcjonalnej zajmuje mniej czasu procesora niż analizowanie tekstu.
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>
Węzeł główny Contacts
ma dwa Contact
węzły. Aby uzyskać dostęp do określonych danych w przeanalizowanym kodzie XML, użyj metody XElement.Elements(), która w tym przypadku zwraca elementy podrzędne węzła głównego Contacts
. Poniższy przykład wyświetla pierwszy Contact
węzeł w konsoli:
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))