【问题标题】:Change Xml value with XElement (with specified Attributes)使用 XElement 更改 Xml 值(具有指定的属性)
【发布时间】:2014-06-10 11:23:45
【问题描述】:
<?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>

你好, 我正在寻找一种通过指定属性(例如:i-82c61ac1)来使用 Xelement 编辑指定值的方法。

(其实我知道如何加载 xml 文件并添加元素,但我被属性指定的编辑值卡住了。)

例如我想编辑&lt;MaxTime&gt;38&lt;/MaxTime&gt;,但只能在&lt;InstanceInfos Name="i-82c61ac1"&gt;下编辑

感谢您的帮助,

最好的问候。

【问题讨论】:

  • 提示:使用DescendantsElements 查找所有具有正确名称的元素,然后使用Where 选择具有正确属性值的元素。

标签: c# xml xelement


【解决方案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");

【讨论】:

    【解决方案2】:

    您可以使用 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");
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-03
      • 1970-01-01
      • 2012-06-14
      • 1970-01-01
      • 2020-05-30
      • 2017-05-18
      • 2017-05-24
      • 1970-01-01
      相关资源
      最近更新 更多