将值设置为加载的xml

时间:2013-03-06 18:20:58

标签: c# xml

如何为加载的xml编写特定值?例如,我想要为PreferenceID 3更改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;

1 个答案:

答案 0 :(得分:2)

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

XDocumentXElementXAttribute非常易于使用。

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

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

现在,您可以使用Linq迭代XElement中的每个prefs。检索和编辑值非常简单:

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

el.Value = "Something else":