Мой код VB добавляет два узла вместо одного - PullRequest
0 голосов
/ 14 февраля 2020

У меня есть следующий XML файл

<?xml version="1.0"?>
<Config>
    <ImgFileName>W10-00</ImgFileName>
    <Index>1</Index>
    <Diag>0</Diag>
</Config>

И я хочу добавить новый узел 'CanSS' и сделать значение = '1'.

Это код Я звоню

Private Sub AddNode(ByVal CFGFile As String, ByVal Node As String, ByVal ValStr As String)
    Dim docXMLDOM As DOMDocument
    Dim nodeRoot As IXMLDOMElement
    Dim nodeNewElement As IXMLDOMElement

    ' Initialize the document model
    docXMLDOM = New DOMDocument

    ' Open the XML document
    docXMLDOM.load(CFGFile)

    ' Get a reference to the root node
    nodeRoot = docXMLDOM.documentElement

    nodeNewElement = docXMLDOM.createElement(Node)
    nodeNewElement.text = ValStr
    nodeRoot.appendChild(nodeNewElement)

    ' Save the file
    docXMLDOM.save(CFGFile)

    docXMLDOM = Nothing
End Sub

, который меняет мой XML на этот

    <?xml version="1.0"?>
<Config>
    <ImgFileName>W10-00</ImgFileName>
    <Index>1</Index>
    <Diag>0</Diag>
<CanSS>1</CanSS><CanSS>1</CanSS></Config>

Может кто-нибудь увидеть, где я иду не так?

Ответы [ 2 ]

0 голосов
/ 17 февраля 2020

Спасибо всем! Оказывается, что некоторый код, который я использовал для получения прав администратора, заставил мое приложение работать, закрываться и перезапускаться. Теперь я использую манифест приложения для повышения привилегий, мой код запускается только один раз и создается только один узел!

0 голосов
/ 14 февраля 2020

Поскольку это VB, вы можете использовать литералы XElement и XElement.

Private Sub AddNode(CFGFile As String, Node As XElement, ValStr As String)
    'to use this method, note the use of the literal
    '  AddNode("PATH to xml", <CanSS/>, "The value")
    Dim xe As XElement
    Try
        xe = XElement.Load(CFGFile)
        Dim nd As XElement = New XElement(Node)
        nd.Value = ValStr
        xe.Add(nd)
        xe.Save(CFGFile)
    Catch ex As Exception
        'todo Error
    End Try
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...