Прочитать на английском

Поделиться через


XElement Конструкторы

Определение

Инициализирует новый экземпляр класса XElement.

Перегрузки

XElement(XElement)

Инициализирует новый экземпляр класса XElement из другого объекта XElement.

XElement(XName)

Инициализирует новый экземпляр класса XElement с указанным именем.

XElement(XStreamingElement)

Инициализирует новый экземпляр класса XElement из объекта XStreamingElement.

XElement(XName, Object)

Инициализирует новый экземпляр класса XElement с указанными именем и содержимым.

XElement(XName, Object[])

Инициализирует новый экземпляр класса XElement с указанными именем и содержимым.

Примеры

В следующем примере создается XML-дерево. Содержимое нового элемента поступает из запроса LINQ.

C#
XElement xmlTree1 = new XElement("Root",
    new XElement("Child", 1),
    new XElement("Child", 2),
    new XElement("Child", 3),
    new XElement("Child", 4),
    new XElement("Child", 5),
    new XElement("Child", 6)
);

XElement xmlTree2 = new XElement("Root",
    from el in xmlTree1.Elements()
    where((int)el >= 3 && (int)el <= 5)
    select el
);
Console.WriteLine(xmlTree2);

В этом примере выводятся следующие данные:

XML
<Root>
  <Child>3</Child>
  <Child>4</Child>
  <Child>5</Child>
</Root>

Комментарии

Сведения о допустимом содержимом, которое можно передать в этот конструктор, см. в разделе Допустимое содержимое объектов XElement и XDocument.

Существует неявное преобразование из строки в XName. Обычно этот конструктор используется для указания строки в качестве параметра вместо создания нового XName.

При создании элемента в пространстве имен обычно используется перегрузка оператора сложения с XNamespace и строкой для создания XName. Дополнительные сведения см. в статье Работа с пространствами имен XML.

XElement(XElement)

Исходный код:
XElement.cs
Исходный код:
XElement.cs
Исходный код:
XElement.cs

Инициализирует новый экземпляр класса XElement из другого объекта XElement.

C#
public XElement (System.Xml.Linq.XElement other);

Параметры

other
XElement

Объект XElement для копирования.

Примеры

В следующем примере создается XML-дерево, создается клон дерева, а затем вызывается метод DeepEquals, который проверяет, равны ли два XML-дерева.

C#
XElement xmlTree = new XElement("Root",
    new XAttribute("Att1", 1),
    new XElement("Child1", 1),
    new XElement("Child2", 2)
);

// Create a clone of the tree.
XElement treeClone = new XElement(xmlTree);

Console.WriteLine("xmlTree = treeClone: {0}", XNode.DeepEquals(xmlTree, treeClone));

// Do some work with xmlTree, perhaps pass it to other methods.
xmlTree.Add(new XElement("Child3", 3));

Console.WriteLine("xmlTree = treeClone: {0}", XNode.DeepEquals(xmlTree, treeClone));

В этом примере выводятся следующие данные:

xmlTree = treeClone: True
xmlTree = treeClone: False

Комментарии

Этот конструктор создает глубокую копию элемента.

См. также раздел

Применяется к

XElement(XName)

Исходный код:
XElement.cs
Исходный код:
XElement.cs
Исходный код:
XElement.cs

Инициализирует новый экземпляр класса XElement с указанным именем.

C#
public XElement (System.Xml.Linq.XName name);

Параметры

name
XName

XName, содержащий имя элемента.

Примеры

В следующем примере создается элемент без содержимого.

C#
XElement el = new XElement("Root");
Console.WriteLine(el);

В этом примере выводятся следующие данные:

XML
<Root />

В следующем примере создается элемент в пространстве имен без содержимого. Дополнительные сведения см. в статье Работа с пространствами имен XML.

C#
XNamespace aw = "http://www.adventure-works.com";
XElement root = new XElement(aw + "Root");
Console.WriteLine(root);

В этом примере выводятся следующие данные:

XML
<Root xmlns="http://www.adventure-works.com" />

Комментарии

Этот конструктор создает элемент без содержимого и атрибутов.

Существует неявное преобразование из строки в XName. Обычно этот конструктор используется для указания строки в качестве параметра вместо создания нового XName. При создании элемента в пространстве имен обычно используется перегрузка оператора сложения с XNamespace и строкой для создания XName. Дополнительные сведения см. в статье Работа с пространствами имен XML.

См. также раздел

Применяется к

XElement(XStreamingElement)

Исходный код:
XElement.cs
Исходный код:
XElement.cs
Исходный код:
XElement.cs

Инициализирует новый экземпляр класса XElement из объекта XStreamingElement.

C#
public XElement (System.Xml.Linq.XStreamingElement other);

Параметры

other
XStreamingElement

Элемент XStreamingElement, содержащий невычисленные запросы, итерации которых будут выполнены для содержимого XElement.

Примеры

В следующем примере создается исходное XML-дерево, а затем создается XStreamingElement из запроса к исходному XML-дереву. Затем он сериализует XStreamingElement в консоль, добавляет новый элемент в исходное XML-дерево, а затем сериализует XStreamingElement снова. Вы видите, что элемент, добавленный в исходное XML-дерево, не включается в первую сериализацию, а включается во вторую.

C#
XElement src = new XElement("Root",
                   new XElement("Child1", 1),
                   new XElement("Child2", 2),
                   new XElement("Child3", 3)
               );
XStreamingElement xse = new XStreamingElement("NewRoot",
                            from el in src.Elements()
                            where (int)el >= 2
                            select el
                        );
Console.WriteLine(xse);
src.Add(new XElement("Child4", 4));
Console.WriteLine("----");
Console.WriteLine(xse);

В этом примере выводятся следующие данные:

<NewRoot>
  <Child2>2</Child2>
  <Child3>3</Child3>
</NewRoot>
----
<NewRoot>
  <Child2>2</Child2>
  <Child3>3</Child3>
  <Child4>4</Child4>
</NewRoot>

Комментарии

Этот конструктор выполняет итерацию по содержимому указанного XStreamingElementобъекта и создает элемент с его содержимым.

См. также раздел

Применяется к

XElement(XName, Object)

Исходный код:
XElement.cs
Исходный код:
XElement.cs
Исходный код:
XElement.cs

Инициализирует новый экземпляр класса XElement с указанными именем и содержимым.

C#
public XElement (System.Xml.Linq.XName name, object content);
C#
public XElement (System.Xml.Linq.XName name, object? content);

Параметры

name
XName

XName, содержащий имя элемента.

content
Object

Содержимое элемента.

Примеры

В следующем примере создается XML-дерево. Содержимое нового элемента поступает из запроса LINQ.

C#
XElement xmlTree1 = new XElement("Root",
    new XElement("Child1", 1),
    new XElement("Child2", 2),
    new XElement("Child3", 3),
    new XElement("Child4", 4),
    new XElement("Child5", 5),
    new XElement("Child6", 6)
);

XElement xmlTree2 = new XElement("Root",
    from el in xmlTree1.Elements()
    where((int)el >= 3 && (int)el <= 5)
    select el
);
Console.WriteLine(xmlTree2);

В этом примере выводятся следующие данные:

XML
<Root>
  <Child3>3</Child3>
  <Child4>4</Child4>
  <Child5>5</Child5>
</Root>

В следующем примере создается XML-дерево с различными типами содержимого.

C#
XElement root;

// String content:
root = new XElement("Root", "Some text");
Console.WriteLine(root);

// XElement object content:
root = new XElement("Root",
    new XElement("NewChild", "n")
);
Console.WriteLine(root);

// XAttribute object content:
root = new XElement("Root",
    new XAttribute("NewAttribute", "n")
);
Console.WriteLine(root);

// Double content:
double dbl = 12.345;
root = new XElement("Root", dbl);
Console.WriteLine(root);

// DateTime content:
DateTime dt = new DateTime(2006, 10, 6, 12, 30, 00);
root = new XElement("Root", dt);
Console.WriteLine(root);

// String array content:
// Any collection other than a collection of XElement or XAttribute objects
// are converted to strings. The strings are concatenated and added.
string[] stringArray = {
    "abc",
    "def",
    "ghi"
};
root = new XElement("Root", stringArray);
Console.WriteLine(root);

// XElement object array content:
XElement[] ellArray = {
    new XElement("NewChild1", 1),
    new XElement("NewChild2", 2),
    new XElement("NewChild3", 3)
};
root = new XElement("Root", ellArray);
Console.WriteLine(root);

// XAttribute object array content:
XAttribute[] attArray = {
    new XAttribute("NewAtt1", 1),
    new XAttribute("NewAtt2", 2),
    new XAttribute("NewAtt3", 3)
};
root = new XElement("Root", attArray);
Console.WriteLine(root);

В этом примере выводятся следующие данные:

XML
<Root>Some text</Root>
<Root>
  <NewChild>n</NewChild>
</Root>
<Root NewAttribute="n" />
<Root>12.345</Root>
<Root>2006-10-06T12:30:00</Root>
<Root>abcdefghi</Root>
<Root>
  <NewChild1>1</NewChild1>
  <NewChild2>2</NewChild2>
  <NewChild3>3</NewChild3>
</Root>
<Root NewAtt1="1" NewAtt2="2" NewAtt3="3" />

В следующем примере создается XML-дерево в пространстве имен.

C#
// Create an XML tree in a namespace.
XNamespace aw = "http://www.adventure-works.com";
XElement root = new XElement(aw + "Root",
    new XElement(aw + "Child", "child content")
);
Console.WriteLine(root);

В этом примере выводятся следующие данные:

XML
<Root xmlns="http://www.adventure-works.com">
  <Child>child content</Child>
</Root>

В следующем примере создается XML-дерево с вложенными пространствами имен.

C#
// Create an XML tree with nested namespaces.
XNamespace aw = "http://www.adventure-works.com";
XNamespace fc = "www.fourthcoffee.com";
XDocument root = new XDocument(
    new XDeclaration("1.0", "utf-8", "yes"),
    new XElement(aw + "Root",
        new XElement(fc + "Child",
            new XElement(aw + "DifferentChild", "other content")
        )
    )
);
Console.WriteLine(root);

В этом примере выводятся следующие данные:

XML
<Root xmlns="http://www.adventure-works.com">
  <Child xmlns="www.fourthcoffee.com">
    <DifferentChild xmlns="http://www.adventure-works.com">other content</DifferentChild>
  </Child>
</Root>

Комментарии

Этот конструктор создает элемент с указанным содержимым и атрибутами.

Существует неявное преобразование из строки в XName. Обычно этот конструктор используется для указания строки в качестве параметра вместо создания нового XName.

При создании элемента в пространстве имен обычно используется перегрузка оператора сложения с XNamespace и строкой для создания XName. Дополнительные сведения см. в статье Работа с пространствами имен XML.

Сведения о допустимом содержимом, которое можно передать в этот конструктор, см. в разделе Допустимое содержимое объектов XElement и XDocument.

См. также раздел

Применяется к

XElement(XName, Object[])

Исходный код:
XElement.cs
Исходный код:
XElement.cs
Исходный код:
XElement.cs

Инициализирует новый экземпляр класса XElement с указанными именем и содержимым.

C#
public XElement (System.Xml.Linq.XName name, params object[] content);
C#
public XElement (System.Xml.Linq.XName name, params object?[] content);

Параметры

name
XName

XName, содержащий имя элемента.

content
Object[]

Начальное содержимое элемента.

Примеры

В следующем примере создается XML-дерево. Содержимое нового элемента поступает из запроса LINQ.

C#
XElement xmlTree1 = new XElement("Root",
    new XElement("Child1", 1),
    new XElement("Child2", 2),
    new XElement("Child3", 3),
    new XElement("Child4", 4),
    new XElement("Child5", 5),
    new XElement("Child6", 6)
);

XElement xmlTree2 = new XElement("Root",
    from el in xmlTree1.Elements()
    where((int)el >= 3 && (int)el <= 5)
    select el
);
Console.WriteLine(xmlTree2);

В этом примере выводятся следующие данные:

XML
<Root>
  <Child3>3</Child3>
  <Child4>4</Child4>
  <Child5>5</Child5>
</Root>

В следующем примере создается XML-дерево с различными типами содержимого.

C#
XElement root;

// String content:
root = new XElement("Root", "Some text");
Console.WriteLine(root);

// XElement object content:
root = new XElement("Root",
    new XElement("NewChild", "n")
);
Console.WriteLine(root);

// XAttribute object content:
root = new XElement("Root",
    new XAttribute("NewAttribute", "n")
);
Console.WriteLine(root);

// Double content:
double dbl = 12.345;
root = new XElement("Root", dbl);
Console.WriteLine(root);

// DateTime content:
DateTime dt = new DateTime(2006, 10, 6, 12, 30, 00);
root = new XElement("Root", dt);
Console.WriteLine(root);

// String array content:
// Any collection other than a collection of XElement or XAttribute objects
// are converted to strings. The strings are concatenated and added.
string[] stringArray = {
    "abc",
    "def",
    "ghi"
};
root = new XElement("Root", stringArray);
Console.WriteLine(root);

// XElement object array content:
XElement[] ellArray = {
    new XElement("NewChild1", 1),
    new XElement("NewChild2", 2),
    new XElement("NewChild3", 3)
};
root = new XElement("Root", ellArray);
Console.WriteLine(root);

// XAttribute object array content:
XAttribute[] attArray = {
    new XAttribute("NewAtt1", 1),
    new XAttribute("NewAtt2", 2),
    new XAttribute("NewAtt3", 3)
};
root = new XElement("Root", attArray);
Console.WriteLine(root);

В этом примере выводятся следующие данные:

XML
<Root>Some text</Root>
<Root>
  <NewChild>n</NewChild>
</Root>
<Root NewAttribute="n" />
<Root>12.345</Root>
<Root>2006-10-06T12:30:00</Root>
<Root>abcdefghi</Root>
<Root>
  <NewChild1>1</NewChild1>
  <NewChild2>2</NewChild2>
  <NewChild3>3</NewChild3>
</Root>
<Root NewAtt1="1" NewAtt2="2" NewAtt3="3" />

В следующем примере создается XML-дерево в пространстве имен.

C#
// Create an XML tree in a namespace.
XNamespace aw = "http://www.adventure-works.com";
XElement root = new XElement(aw + "Root",
    new XElement(aw + "Child", "child content")
);
Console.WriteLine(root);

В этом примере выводятся следующие данные:

XML
<Root xmlns="http://www.adventure-works.com">
  <Child>child content</Child>
</Root>

В следующем примере создается XML-дерево с вложенными пространствами имен.

C#
// Create an XML tree with nested namespaces.
XNamespace aw = "http://www.adventure-works.com";
XNamespace fc = "www.fourthcoffee.com";
XElement root = new XElement(aw + "Root",
    new XElement(fc + "Child",
        new XElement(aw + "DifferentChild", "other content")
    )
);
Console.WriteLine(root);

В этом примере выводятся следующие данные:

XML
<Root xmlns="http://www.adventure-works.com">
  <Child xmlns="www.fourthcoffee.com">
    <DifferentChild xmlns="http://www.adventure-works.com">other content</DifferentChild>
  </Child>
</Root>

Комментарии

Этот конструктор создает элемент с указанным содержимым и атрибутами.

Существует неявное преобразование из строки в XName. Обычно этот конструктор используется для указания строки в качестве параметра вместо создания нового XName.

При создании элемента в пространстве имен обычно используется перегрузка оператора сложения с XNamespace и строкой для создания XName. Дополнительные сведения см. в статье Работа с пространствами имен XML.

Сведения о допустимом содержимом, которое можно передать в этот конструктор, см. в разделе Допустимое содержимое объектов XElement и XDocument.

См. также раздел

Применяется к