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

Zobacz też