使用标准的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>
你似乎想做一些类似的事情:
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区分大小写