首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UPdating XML,获取“对象引用未设置为对象实例”。

UPdating XML,获取“对象引用未设置为对象实例”。
EN

Stack Overflow用户
提问于 2016-03-21 16:15:46
回答 1查看 1.5K关注 0票数 0

我试图更新XML文档中的3条数据,但得到了“对象引用未设置为对象实例”错误。这是我要更新的XML文件格式:

代码语言:javascript
复制
<?xml version="1.0" encoding="US-ASCII" standalone="true"?>
<ExportSettings xmlns="CompanyName" ExportName="Data Export" Dataset="TestName">
  <General>
     <AsOfDate>03/31/15</AsOfDate>
     <PriceDate>03/31/16</PriceDate>  
  </General>
  <Source>
      <Set>Set Name</Set>
  </Source>
</ExportSettings>

这是抛出错误的C#代码:

代码语言:javascript
复制
    private void btnUpdate_Click(object sender, EventArgs e)
    {
        try
        {
            {
                string strAsOfDate = dateTimePickerAsOfDate.Text;
                string strPriceDate = dateTimePickerPriceDate.Text;
                string strSetName = txtboxSet.Text;

                XmlDocument doc = new XmlDocument();
                doc.Load(strXMLfilepath);
                XmlNode General;
                XmlNode root = doc.DocumentElement;
                General = root.SelectSingleNode("/ExportSettings/General");
                General["AsOfDate"].InnerText = strAsOfDate;
                General["PriceDate"].InnerText = strPriceDate;
                XmlNode Source;
                Source = root.SelectSingleNode("/ExportSettings/Source");
                Source["Set"].InnerText = strSetName;
                doc.Save(strXMLfilepath);

            }
        }
        catch (System.Exception excep)
        {
            MessageBox.Show(excep.Message);
        }
    }

有人能看到问题吗?我不太熟悉XML的更新,所以这里可能有一些基本的错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-21 16:41:08

我已经在本地调试了它,正如Pawel所建议的,您需要对名称空间进行一些更改:

代码语言:javascript
复制
private void btnUpdate_Click(object sender, EventArgs e)
{
    try
    {
        {
            string strAsOfDate = dateTimePickerAsOfDate.Text;
            string strPriceDate = dateTimePickerPriceDate.Text;
            string strSetName = txtboxSet.Text;

            XmlDocument doc = new XmlDocument();
            doc.Load(strXMLfilepath);

            XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
            nsmgr.AddNamespace("ab", "CompanyName");

            XmlNode General;
            XmlNode root = doc.DocumentElement;
            General = root.SelectSingleNode("//ab:General", nsmgr);
            General["AsOfDate"].InnerText = strAsOfDate;
            General["PriceDate"].InnerText = strPriceDate;

            doc.Save(strXMLfilepath);
        }
    }
    catch (System.Exception excep)
    {
        MessageBox.Show(excep.Message);
    }
}

希望这能有所帮助。

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

https://stackoverflow.com/questions/36136296

复制
相关文章

相似问题

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