Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье содержатся сведения о создании деревьев XML в Visual Basic с помощью XML-литерала и внедренных выражений.
Пример: Используйте XML-литералы для создания дерева XML
В следующем примере показано, как создать XElement(в данном случае contacts) с XML-литералами:
Dim contacts As XElement = _
<Contacts>
<Contact>
<Name>Patrick Hines</Name>
<Phone>206-555-0144</Phone>
<Address>
<Street1>123 Main St</Street1>
<City>Mercer Island</City>
<State>WA</State>
<Postal>68042</Postal>
</Address>
</Contact>
</Contacts>
Пример. Использование XML-литерала для создания XElement с простым содержимым
Вы можете создать объект, содержащий простое XElement содержимое, как показано ниже.
Dim n as XElement = <Customer>Adventure Works</Customer>
Console.WriteLine(n)
В примере получается следующий вывод.
<Customer>Adventure Works</Customer>
Пример: Создание пустого элемента с помощью XML-литерала
Вы можете создать пустое XElement, как показано ниже.
Dim n As XElement = <Customer/>
Console.WriteLine(n)
В примере получается следующий вывод.
<Customer />
Создание содержимого с помощью внедренных выражений
Важной особенностью XML-литералов является то, что они дают возможность встраивать выражения. Внедренные выражения позволяют оценивать выражение и вставлять результаты выражения в XML-дерево. Если выражение оценивается как тип XElement, элемент вставляется в дерево. Если выражение оценивается как тип XAttribute, атрибут вставляется в дерево. Элементы и атрибуты можно вставить в дерево только в том месте, где они допустимы.
Важно отметить, что только одно выражение может перейти в внедренное выражение. Невозможно встроить несколько выражений. Если выражение выходит за рамки одной строки, необходимо использовать символ продолжения строки.
Если существующие узлы уже имеют родителя, а вы используете внедренное выражение для добавления этих узлов (включая элементы) и атрибутов в новое XML-дерево, то узлы клонируются. Клонированные узлы присоединяются к новому xml-дереву. Если существующие узлы не являются родительскими, узлы просто присоединяются к новому xml-дереву. В последнем примере в этой статье показано это.
Пример. Использование внедренного выражения для вставки элемента
В следующем примере используется внедренное выражение для вставки элемента в дерево:
xmlTree1 As XElement = _
<Root>
<Child>Contents</Child>
</Root>
Dim xmlTree2 As XElement = _
<Root>
<%= xmlTree1.<Child> %>
</Root>
Console.WriteLine(xmlTree2)
В примере получается следующий вывод.
<Root>
<Child>Contents</Child>
</Root>
Пример: Используйте встроенное выражение для контента
Для предоставления содержимого элемента можно использовать внедренное выражение:
Dim str As String
str = "Some content"
Dim root As XElement = <Root><%= str %></Root>
Console.WriteLine(root)
В примере получается следующий вывод.
<Root>Some content</Root>
Пример. Использование запроса LINQ в внедренном выражении
Результаты запроса LINQ можно использовать для предоставления содержимого элемента:
Dim arr As Integer() = {1, 2, 3}
Dim n As XElement = _
<Root>
<%= From i In arr Select <Child><%= i %></Child> %>
</Root>
Console.WriteLine(n)
В примере получается следующий вывод.
<Root>
<Child>1</Child>
<Child>2</Child>
<Child>3</Child>
</Root>
Пример. Использование внедренного выражения для предоставления имен узлов
Вы также можете использовать внедренное выражение для вычисления имен атрибутов, значений атрибутов, имен элементов и значений элементов:
Dim eleName As String = "ele"
Dim attName As String = "att"
Dim attValue As String = "aValue"
Dim eleValue As String = "eValue"
Dim n As XElement = _
<Root <%= attName %>=<%= attValue %>>
<<%= eleName %>>
<%= eleValue %>
</>
</Root>
Console.WriteLine(n)
В примере получается следующий вывод.
<Root att="aValue">
<ele>eValue</ele>
</Root>
Пример. Использование внедренного выражения для клонирования и подключения узлов
Как упоминалось ранее, если вы используете встроенное выражение для добавления существующих узлов (включая элементы) и атрибутов в новое XML-дерево, и если добавляемые узлы уже имеют родителей, то узлы клонируются, и их клоны присоединяются к новому XML-дереву. Если существующие узлы не имеют родителя, они просто прикрепляются к новому XML-дереву.
Следующий код демонстрирует поведение при добавлении родительского элемента в дерево и при добавлении элемента без родительского элемента в дерево.
' Create a tree with a child element.
Dim xmlTree1 As XElement = _
<Root>
<Child1>1</Child1>
</Root>
' Create an element that's not parented.
Dim child2 As XElement = <Child2>2</Child2>
' Create a tree and add Child1 and Child2 to it.
Dim xmlTree2 As XElement = _
<Root>
<%= xmlTree1.<Child1>(0) %>
<%= child2 %>
</Root>
' Compare Child1 identity.
Console.WriteLine("Child1 was {0}", _
IIf(xmlTree1.Element("Child1") Is xmlTree2.Element("Child1"), _
"attached", "cloned"))
' Compare Child2 identity.
Console.WriteLine("Child2 was {0}", _
IIf(child2 Is xmlTree2.Element("Child2"), _
"attached", "cloned"))
В примере получается следующий вывод.
Child1 was cloned
Child2 was attached