<?xml version="1.0" encoding="utf-8"?>
<Instances>
<InstanceInfos Name="i-82c61ac1">
<MaxTime>38</MaxTime>
</InstanceInfos>
<InstanceInfos Name="i-83c61ac0">
<MaxTime>447</MaxTime>
</InstanceInfos>
</Instances>
您好, 我正在寻找一种通过指定属性来编辑Xelement指定值的方法(例如:i-82c61ac1)。
(实际上我知道如何加载xml文件并添加元素,但是我因为Attributs指定的编辑值而陷入困境。)
例如,我想编辑<MaxTime>38</MaxTime>
但仅限于<InstanceInfos Name="i-82c61ac1">
感谢您的帮助,
最好的问候。
答案 0 :(得分:1)
XDocument xDoc = XDocument.Load("file.xml");
XElement result = xDoc.Descendants("InstanceInfos")
.Where(x => x.Attribute("Name")
.Value == "i-82c61ac1")
.Descendants()
.SingleOrDefault();
result.Value = "Foo";
xDoc.Save("file.xml");
答案 1 :(得分:0)
您可以使用XDocument加载xml并使用Descendants
private static void Main(string[] args)
{
var data = @"<?xml version=""1.0"" encoding=""utf-8""?>
<Instances>
<InstanceInfos Name=""i-82c61ac1"">
<MaxTime>38</MaxTime>
</InstanceInfos>
<InstanceInfos Name=""i-83c61ac0"">
<MaxTime>447</MaxTime>
</InstanceInfos>
</Instances>";
var document = XDocument.Parse(data);
const string attributeId = "i-82c61ac1";
var element = document.Descendants("InstanceInfos").FirstOrDefault(p => p.Attribute("Name").Value.Equals(attributeId));
if (element != null)
{
var maxTime = element.Elements("MaxTime").FirstOrDefault();
if (maxTime != null) maxTime.Value = "100";
}
document.Save("FinalResult.xml");
}