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

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


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

Определение

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

Перегрузки

XElement(XElement)

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

XElement(XName)

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

XElement(XStreamingElement)

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

XElement(XName, Object)

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

XElement(XName, Object[])

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

Примеры

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

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

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

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

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

Параметры

other
XElement

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

Примеры

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

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

Комментарии

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

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

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

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

XElement(XName)

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

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

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

Параметры

name
XName

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

Примеры

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

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

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

<Root />

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

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

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

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

Комментарии

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

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

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

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

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

XElement(XStreamingElement)

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

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

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

Параметры

other
XStreamingElement

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

Примеры

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

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объекта и создает элемент с его содержимым.

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

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

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

XElement(XName, Object)

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

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

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

Параметры

name
XName

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

content
Object

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

Примеры

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

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

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

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

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

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

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

<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-дерево в пространстве имен.

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

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

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

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

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

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

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

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

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

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

XElement(XName, Object[])

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

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

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

Параметры

name
XName

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

content
Object[]

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

Примеры

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

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

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

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

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

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

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

<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-дерево в пространстве имен.

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

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

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

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

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

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

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

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

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

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0