2013-03-06 57 views
1

如何向加載的XML中寫入特定值?例如,我想讓PreSourceID的值改變爲PreferenceID 3.什麼是最有效的方法呢?將值設置爲加載的xml

這是我想要做的一個簡短的例子。

XmlDocument doc = new XmlDocument(); 
      XmlElement el = (XmlElement)doc.AppendChild(doc.CreateElement("UserObject")); 

        XmlNode emailAddressXml = UserEmailAddressDTO.AppendChild(doc.CreateNode(XmlNodeType.Element, "EmailAddress", null)); 
        emailAddressXml.InnerText = emailaddress; 

        doc.Load("Prefs.xml"); 

        XmlNode SourceXml = UserEmailAddressDTO.AppendChild(doc.CreateNode(XmlNodeType.Element, "Source", null)); 
        originSourceXml.InnerXml = "Good Sam"; 

    string usrObj = doc.outerXml; 

回答

2

效率是主觀的,所以我會提供我的建議。根據.Net版本(我相信3.5+),您應該使用Linq2Xml

XDocumentXElementXAttribute很容易處理。現在

var doc = XDocument.Load("Prefs.xml"); 

var prefs = doc.Root.Descendents("UserEmailAddressPreferences"); 

你可以使用LINQ遍歷prefs內的每個XElement。檢索和編輯值很簡單:

// untested code 
XElement el = prefs.Elements().Where(e => e.Element("PreferenceID").Value == 3) 
           .Select(e => e.Element("OriginSource") 
           .FirstOrDefault(); 

el.Value = "Something else": 
+0

如果我已經有了一個XmlDocument,我可以合併這兩個嗎? – 2013-03-06 19:55:07

+0

不確定'merge'是什麼意思,但是用DOM('XmlDocument')加載的.Xml文件和'XDocument'加載的文件沒有區別。兩個對象都不可互換* - 與其中一個或另一個一起工作。 Linq2Xml的靈活性更高。 – IAbstract 2013-03-06 20:39:51

+0

@TreyCopeland'XmlDocument'來自'System.Xml'命名空間,並且不提供'XDocument'提供的LINQ功能。但是,他們都在操縱XML – flipchart 2013-03-07 05:46:19

相關問題