2016-03-03 81 views
1

我想从XML文件更新节点值,但是当我尝试执行此操作时引发异常“附加信息:对象引用不是设置为一个对象的实例。“试图更新XML的节点值,它抛出一个异常

这是我有:

public void UpdateXMLValues(List<string> values) 
{ 
    XmlNode node; 
    xmldoc = new XmlDocument(); 
    xmldoc.Load(XMLInterfaces); 
    node = xmldoc.SelectSingleNode("Servers/MYSERVER"); 
    XMLValues = new List<string>(values); 
    node.Attributes["Host"].Value = XMLValues[0]; 
    xmldoc.Save(XMLInterfaces); 
} 

,这是我的XML信息:

<Servers> 
    <MYSERVER> 
    <Host>0.0.0.0</Host> 
    <Port>23</Port> 
    <User>TestingUser</User> 
    <Password>/NNfWRStbZsUyc88S5tjhA==</Password> 
    </MYSERVER> 
</Servers> 

当我按下F11在该行node.Attributes [ “主机”] =值XMLValues [0];我得到错误

任何想法?

+1

看起来像你的XML是无效的,需求要么是结束标记要么是需要自动关闭 JanR

+0

对不起!它有密切的标签,只是我没有在我的例子中添加这里... –

+0

你能用适当的xml更新你的问题吗?结束标签在哪里? – JanR

回答

2

Host不是MYSERVER元素的属性。它里面有一个元素

您可以像这样访问:

var hostNode = node["Host"]; 
hostNode.Value = XMLValues[0]; 

仅供参考,如果它是一个属性,你的XML应该是这样的:

<MYSERVER host="some_host"> 
</MYSERVER> 
+0

如果不是一个属性,那么我如何更新该值? –

+0

我已经更新了问题,以包括如何更新值。 –

+0

我得到这个使用这个解决方案: var hostNode = node [“Host”]; hostNode.Value = XMLValues [0]; –