XAttribute, klasa — przegląd

Atrybuty to pary nazwa-wartość, które są skojarzone z elementem. Klasa XAttribute reprezentuje atrybuty XML.

Praca z atrybutami w linQ to XML jest podobna do pracy z elementami. Ich konstruktory są podobne. Metody używane do pobierania kolekcji są podobne. Wyrażenie zapytania LINQ dla kolekcji atrybutów wygląda podobnie do wyrażenia zapytania LINQ dla kolekcji elementów.

Kolejność dodawania atrybutów do elementu jest zachowywana. Oznacza to, że podczas iterowania atrybutów są one widoczne w tej samej kolejności, w której zostały dodane.

Konstruktor XAttribute

Następujący konstruktor XAttribute klasy to ten, którego najczęściej używasz:

Konstruktor opis
XAttribute(XName name, object content) Tworzy obiekt XAttribute. Argument name określa nazwę atrybutu; content określa zawartość atrybutu.

Przykład: tworzenie elementu z atrybutem

W poniższym przykładzie pokazano typowe zadanie tworzenia elementu zawierającego atrybut.

XElement phone = new XElement("Phone",
    new XAttribute("Type", "Home"),
    "555-555-5555");
Console.WriteLine(phone);
Dim phone As XElement = <Phone Type="Home">555-555-5555</Phone>
Console.WriteLine(phone)

Ten przykład generuje następujące wyniki:

<Phone Type="Home">555-555-5555</Phone>

Przykład: Funkcjonalna konstrukcja atrybutów

Obiekty można konstruować XAttribute zgodnie z konstrukcją XElement obiektów, jak pokazano w poniższym przykładzie:

XElement c = new XElement("Customers",
    new XElement("Customer",
        new XElement("Name", "John Doe"),
        new XElement("PhoneNumbers",
            new XElement("Phone",
                new XAttribute("type", "home"),
                "555-555-5555"),
            new XElement("Phone",
                new XAttribute("type", "work"),
                "666-666-6666")
        )
    )
);
Console.WriteLine(c);
Dim c As XElement = _
    <Customers>
        <Customer>
            <Name>John Doe</Name>
            <PhoneNumbers>
                <Phone type="home">555-555-5555</Phone>
                <Phone type="work">666-666-6666</Phone>
            </PhoneNumbers>
        </Customer>
    </Customers>
Console.WriteLine(c)

Ten przykład generuje następujące wyniki:

<Customers>
  <Customer>
    <Name>John Doe</Name>
    <PhoneNumbers>
      <Phone type="home">555-555-5555</Phone>
      <Phone type="work">666-666-6666</Phone>
    </PhoneNumbers>
  </Customer>
</Customers>

Atrybuty nie są węzłami

Istnieją pewne różnice między atrybutami i elementami. XAttribute obiekty nie są węzłami w drzewie XML. Są to pary name-value skojarzone z elementem XML. W przeciwieństwie do modelu obiektów dokumentów (DOM) bardziej odzwierciedla strukturę xml. Chociaż XAttribute obiekty nie są rzeczywiście węzłami w drzewie XML, praca z obiektami XAttribute jest podobna do pracy z obiektami XElement .

To rozróżnienie jest ważne przede wszystkim tylko dla deweloperów, którzy piszą kod, który współpracuje z drzewami XML na poziomie węzła. Wielu deweloperów nie będzie zainteresowanych tym rozróżnieniem.

Zobacz też