更新其他应用程序app.config键值对

时间:2011-01-14 17:56:28

标签: xml vb.net visual-studio-2010

我正在尝试修改不属于我的.net应用程序的app.config文件。 我的密钥需要是唯一的,并且出现在静态密钥(Server1或Server2)下,因为另一个应用程序逐行读取这些值,将数据库(n)值与服务器(n)值相关联。

我看不到对外部.config文件使用标准app.config方法的方法,所以我使用的是Xml Document类。

示例XML文件:

  

<add key="server1" value="SERVER\SQL2000" />
<add key="database1" value="ggfd" />
<add key="database2" value="dvdv" />

<add key="server2" value="SERVER\SQL2005" />
<add key="database3" value="trvs" />
<add key="database4" value="tgdfs" />
<add key="database5" value="trvs" />

我可以阅读\写新节点:

Dim MyKey As String = "database" & No?
    Dim XmlDocument As New XmlDocument
    Dim XmlNode As XmlNode
    Dim XmlRoot As XmlNode
    Dim XmlKey As XmlNode
    Dim XmlValue As XmlNode

    Save_Config_Parameter = ""
    XmlDocument.Load("app.config")

    XmlNode = XmlDocument.DocumentElement.SelectSingleNode("/configuration/appSettings/add[@key=""" & MyKey & """]")

    If XmlNode Is Nothing Then


        XmlNode = XmlDocument.CreateNode(XmlNodeType.Element, "add", "")
        XmlKey = XmlDocument.CreateNode(XmlNodeType.Attribute, "key", "")
        XmlKey.Value = MyKey
        XmlNode.Attributes.SetNamedItem(XmlKey)
        XmlValue = XmlDocument.CreateNode(XmlNodeType.Attribute, "value", "")
        XmlValue.Value = MyValue
        XmlNode.Attributes.SetNamedItem(XmlValue)

        XmlRoot = XmlDocument.DocumentElement.SelectSingleNode("/configuration/appSettings")
        If Not XmlRoot Is Nothing Then
            XmlRoot.AppendChild(XmlNode)
        Else
            Save_Config_Parameter = "ERROR"
        End If
    Else

        XmlNode.Attributes.GetNamedItem("value").Value = MyValue

    End If

    XmlDocument.Save("app.config")

但是找不到一种方法来检索Key以检查它是否存在,更重要的是增加值?

感谢。

1 个答案:

答案 0 :(得分:1)

我认为你已经走在了正确的道路上。您正在寻找按键抓取元素的方法,因此您可以增加并查看它是否存在。

现在,考虑到您正在讨论的结构,最好使用“NextSibling”方法遍历元素并跟踪您找到的项目,而不是查询每个键的顺序是否有详细信息很重要。