XML добавить атрибут без создания переменной - PullRequest
0 голосов
/ 28 марта 2020

Я пытаюсь получить следующий код в одной строке без объявления переменной. Код создаст элемент XML, добавит атрибут и значение и, наконец, добавит его к документу XML:

    Dim XMLDoc As New XmlDocument
    Dim XMLRoot As XmlElement
    XMLRoot = XMLDoc.CreateElement("Test1")
    XMLRoot.Attributes.Append(XMLDoc.CreateAttribute("Test2")).Value = "Test3"
    XMLDoc.AppendChild(XMLRoot)

Я пробовал следующее, но он возвращает ошибку: Логическое не может быть преобразовано в 'XmlNode'.

    Dim XMLDoc As New XmlDocument
    XMLDoc.AppendChild(XMLDoc.CreateElement("Test1").Attributes.Append(XMLDoc.CreateAttribute("Test2").Value = "Test3"))

Возвращает ошибку: Выражение не создает значение.

    Dim XMLDoc As New XmlDocument
    XMLDoc.AppendChild(XMLDoc.CreateElement("Test1").SetAttribute("Test2", "Test3"))

Ответы [ 2 ]

1 голос
/ 28 марта 2020

Похоже, вы создаете новый xml документ. Есть несколько других вариантов создания xml без введения «временных» переменных.

XDocument (System. Xml .Linq)

Dim document As New XDocument(
    new XElement(
        "root",
        new XElement(
            "element",
            new XAttribute("type", "parent")
        )
    )    
)

' Output

' <root>
'     <person type="parent" />
' </root>

С XML Literals, который является функцией, существующей только в VB. NET, вы можете сделать это более удобным способом

Dim document As XDocument = 
    <?xml version="1.0"?>
    <root>
        <person type="parent"></person>
    </root>

' Output

' <root>
'      <person type="parent" />
' </root>

Если вам нужно добавить элемент в уже существующий xml:

С LINQ к XML

Dim document As XDocument = XDocument.Load(filepath)

document.Root.Add(new XElement("person", new XAttribute("type", "child")))

С XML Литералами

Dim document As XDocument = XDocument.Load(filepath)

document.Root.Add(<person type="child"></person>)
1 голос
/ 28 марта 2020

Мне не нравится библиотека XML, особенно из-за количества строк, которые нужно создать и добавить элементы. Я исключительно использую новую Net библиотеку System.Xml.Linq. Смотрите код ниже:

Imports System.Xml
Imports System.Xml.Linq
Module Module1

    Sub Main()
        Dim doc As New XDocument(New XElement("Test1", New XAttribute("Test2", "Test3")))
    End Sub

End Module
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...