C# 将值设置为加载的xml

C# 将值设置为加载的xml,c#,xml,C#,Xml,如何将特定值写入加载的xml?例如,我想更改PreferenceID3的OriginSource值。最有效的方法是什么 这是我尝试做的一个简短示例 XmlDocument doc = new XmlDocument(); XmlElement el = (XmlElement)doc.AppendChild(doc.CreateElement("UserObject")); XmlNode emailAddressX

如何将特定值写入加载的xml?例如,我想更改PreferenceID3的OriginSource值。最有效的方法是什么

这是我尝试做的一个简短示例

    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;

效率是主观的,所以我会提供我的建议。根据.Net版本(我相信是3.5+版本)的不同,您应该使用

,并且非常容易使用

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":

不确定“合并”是什么意思,但使用DOM加载的.Xml文件(
XmlDocument
)与加载的
XDocument
之间没有区别。两个对象都不可互换-使用一个或另一个。使用Linq2Xml,您有了更大的灵活性。@TreyCopeland
XmlDocument
来自
System.Xml
命名空间,不提供
XDocument
提供的LINQ功能。然而,它们都是用来操作XML的