我有一个XML如下。
<AFConfig>
<Geographies>
<Geography id="Place1" description="NicePlace">
<MetaData>
<Services>
<Service>
...
...
</Service>
</Services>
</MetaData>
<Systems>
<DefaultSystem systemName="SYSONE" server=http"//192.168.0.0" />
</Systems>
</Geography>
<Geographies>
</AFConfig>
我想做的就是这个。
我的代码。
XDocument xd_Document = XDocument.Load(s_FileName);
XElement xe_Element = (from xe in xd_Document.XPathSelectElements(s_Element)
where xe.Attribute(s_IdAttr).Value == s_Value
select xe).SingleOrDefault();
XElement xe_NewElement = CloneElement(xe_Element)
foreach(KeyValuePair<string, string> s in d_AttrValue)
xe_NewElement.Attribute(s.Key).Value = d_AttrValue[s.Key];
xe_Element.Parent.Add(xe_NewElement);
xd_Document.Save(s_destFileName);
我将以下参数传递给此方法 string s_FileName,string s_destFileName,string s_Element,string s_IdAttr,string s_Value,Dictionary d_AttrValue
使用此代码,我可以修改id和description属性。
问题:如何使用值?
修改DefaultSystem属性systemName注意:我对现有元素的修改具有相同的代码,而不是创建新元素。再次,我遇到了同样的问题。通用解决方案将是首选。
答案 0 :(得分:0)
xe_NewElement.Element("Systems")
.Element("DefaultSystem")
.Attribute("systemName")
.Value = "Enter your value here";
我相信应该做你需要的。
编辑:
var attribute = ((IEnumerable)xe_NewElement.XPathEvaluate("Systems/DefaultSystem/@systemName"))
.Cast<XAttribute>().FirstOrDefault();
attribute.Value =“在此处输入您的值”;
通过传入xpath和值列表,一般允许你这样做。