使用标准的microsoft库写入XML文件

本文关键字:XML 文件 microsoft 标准 | 更新日期: 2023-09-27 18:08:22

我正试图使用此函数将值写入XML文件。我保留了sql_connection下的值,但收到了错误"Object reference not set to a instance of a Object"。我理解这个错误的含义,但我不知道如何处理XML文件。我应该如何处理这个问题?当我遍历代码时,它会在myNode.Value=sql_connection;它说我返回了一个空值,但sql_connection看到了我在管理页面上输入的值。提前谢谢。

    public void SAVEsqlConnection(string sql_Connection)
    {
        XmlDocument myXmlDocument = new XmlDocument();
        myXmlDocument.Load("C:''Users''fthompson11''WebFile.xml");

        XmlNode root = myXmlDocument.DocumentElement;
        XmlNode myNode = root.SelectSingleNode("/connectionString");
        myNode.Value = sql_Connection;
        myXmlDocument.Save("C:''Users''fthompson11''WebFile.xml");
    }

我也尝试过这样做:

    public void SAVEsqlConnection(string sql_Connection)
    {
        XmlDocument myXmlDocument = new XmlDocument();
        myXmlDocument.Load("C:''Users''fthompson11''WebFile.xml");
        string connectionStringXPath = "/ConnectionStrings/add[@connectionString='"{0}'"]";
        connectionStringXPath = string.Format(connectionStringXPath, sql_Connection);
        XmlNode node = myXmlDocument.SelectSingleNode(connectionStringXPath);
        node.Attributes["ConnectionStrings"].Value = sql_Connection;
        myXmlDocument.Save("C:''Users''fthompson11''WebFile.xml");
    }

给你:

<?xml version="1.0" encoding="UTF-8"?>
<!--This is to write the connection string-->
-<ConnectionStrings> <add connectionString="asdf" Name="sqlConnection1"/>  </ConnectionStrings>

使用标准的microsoft库写入XML文件

你似乎想做一些类似的事情:

            XmlDocument myXmlDocument = new XmlDocument();
            myXmlDocument.Load(@"..'..'XMLFile1.xml");
            XmlNode root = myXmlDocument.DocumentElement;
            //We only want to change one connection. 
            //This could be removed if you just want the first connection, regardless of name.
            var targetKey = "sqlConnection1";
            //get the add element we want
            XmlNode myNode = root.SelectSingleNode(string.Format("add[@Name = '{0}']", targetKey));
            var sql_Connection = "some sql connection";
            //set the value of the connectionString attribute to the value we want
            myNode.Attributes["connectionString"].Value = sql_Connection;
            myXmlDocument.Save(@"..'..'XMLFile2.xml");

XPATH值不正确。

XmlNode myNode = root.SelectSingleNode("/connectionString");

在上面的行中,myNode为null,因为方法SelectSingleNode返回与XPath查询匹配的第一个XmlNode,如果未找到匹配的节点并且没有包含该XPath的节点,则返回null。看起来像是一个拼写错误,您在ConnectionStrings中省略了"s"(或者认为您可以使用类似元素[节点]名称的属性名称

在第二个示例中,XPATH需要解析为

"/ConnectionStrings/add[@connectionString='asdf']"

同样,看起来你有一个拼写错误,你在表达式中使用引号("(而不是勾号('(

如果您正在查找add element的属性,那么您的XPATH表达式将是/ConnectionStrings/add,然后您可以获得该节点的属性。这假设您已经从根节点向我们提供了XML。你可能想看看这个教程

一旦你通过了XmlNode的空问题,你就会有另一个拼写错误。

node.Attributes["ConnectionStrings"].Value = sql_Connection;

在上面的XML示例中,属性名称是connectionString而不是ConnectionStrings,因此您需要将上面的行更改为.

node.Attributes["connectionString"].Value = sql_Connection;
node.Attributes["**ConnectionStrings**"].Value = sql_Connection;

应该与Xml中的大小写完全相同。Xml区分大小写