如何使用另一个元素属性获取同一级别元素的值

本文关键字:元素 一级 另一个 何使用 属性 获取 | 更新日期: 2023-09-27 18:33:07

我不确定我的标题措辞是否正确 - 否则总结似乎有点复杂。我会尽力在这里更好地解释。

我有一些类似于下面的XML:

<Object type="element">
  <Property name="name1" value="somevalue1"/>
  <Property name="name2" value="somevalue2"/>
  <Property name="name3" value="somevalue3"/>
</Object>

我想通过使用propery name2 value来获得property name1 value。我有多个看起来相似的对象,但只是认为最好只向 SO 发布一个示例。

我已经有了property name2 value,只是能够使用它来获得我需要的东西的问题。我还想使用 XML 到 LINQ 并使用属性来执行此操作(如果将来更改顺序,按索引可能会搞砸事情(。

我希望这是有道理的。如果有任何其他问题,请随时发表评论,我将编辑我的帖子以澄清。

如何使用另一个元素属性获取同一级别元素的值

var xml = @"
            <root>
               <Object type=""element"">
                  <Property name=""test1"" value=""testvalue1""/>
                  <Property name=""test2"" value=""testvalue2""/>
                  <Property name=""test3"" value=""testvalue3""/>
               </Object>
               <Object type=""element"">
                  <Property name=""name1"" value=""somevalue1""/>
                  <Property name=""name2"" value=""somevalue2""/>
                  <Property name=""name3"" value=""somevalue3""/>
                </Object>
             </root>";
var att = XDocument.Parse(xml)
            .Descendants("Object")
            .First(ele => ele
                .Elements()
                .Any(child => child.Attribute("value").Value == "somevalue2"))
            .Elements()
            .First(ele => ele.
                Attribute("name").Value == "name1")
            .Attribute("value").Value;

获取具有value="somevalue2"子元素的Object元素,然后从name1中获取value基础