2016-03-03 84 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]; –