首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的VB代码附加了两个节点,而不是只有一个

我的VB代码附加了两个节点,而不是只有一个
EN

Stack Overflow用户
提问于 2020-02-15 01:13:25
回答 2查看 43关注 0票数 0

我有以下XML文件

代码语言:javascript
复制
<?xml version="1.0"?>
<Config>
    <ImgFileName>W10-00</ImgFileName>
    <Index>1</Index>
    <Diag>0</Diag>
</Config>

我想添加一个新节点'CanSS‘,并将值设为'1’。

这就是我要调用的代码

代码语言:javascript
复制
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更改为

代码语言:javascript
复制
    <?xml version="1.0"?>
<Config>
    <ImgFileName>W10-00</ImgFileName>
    <Index>1</Index>
    <Diag>0</Diag>
<CanSS>1</CanSS><CanSS>1</CanSS></Config>

有人能看出我哪里错了吗?

EN

回答 2

Stack Overflow用户

发布于 2020-02-15 03:45:48

由于这是VB,你可以使用XElement和XElement字面量。

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2020-02-17 18:36:45

谢谢大家!原来,我用来获得管理员权限的一些代码导致我的应用程序运行、关闭和重新运行。我现在使用应用程序清单来提升权限,我的代码只运行一次,并且只创建了一个节点!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60230803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档