如何通过在 .NET 中提供子值来读取父 XML

本文关键字:读取 XML 何通过 NET | 更新日期: 2023-09-27 17:52:54

<?xml version="1.0" encoding="utf-8" ?>
<PrimaryLink>
  <LinkID>p1</LinkID>
    <SecondaryLink>
      <LinkID>s1</LinkID>      
        <LeftMenu>
          <NavLinks>
            <LinkID>n1</LinkID>
          </NavLinks>
          <NavLinks>
            <LinkID>n2 </LinkID>               
          </NavLinks>
        </LeftMenu>
    </SecondaryLink>  
</PrimaryLink>

C#

var menuItems1 = from c in xMenuElement.Elements("GlobalNavigation").Elements("PrimaryLink")
                 select c;

我通过给出 n1 作为输入来p1->s1->n1 ans 喜欢什么

如何通过在 .NET 中提供子值来读取父 XML

这里有一个解决方案。它不是很漂亮,但它可以做你想要的。

 string xmlContent=@"<?xml version=""1.0"" encoding=""utf-8"" ?>
                                <PrimaryLink>
                                  <LinkID>p1</LinkID>
                                    <SecondaryLink>
                                      <LinkID>s1</LinkID>      
                                        <LeftMenu>
                                          <NavLinks>
                                            <LinkID>n1</LinkID>
                                          </NavLinks>
                                          <NavLinks>
                                            <LinkID>n2</LinkID>               
                                          </NavLinks>
                                        </LeftMenu>
                                    </SecondaryLink>  
                                </PrimaryLink>";
        XDocument doc = XDocument.Parse(xmlContent);
        var targetNode = doc.Descendants().Where(p=>p.Value=="n1").FirstOrDefault();
        string path = null;
        if (targetNode!=null)
        {
            path=targetNode.AncestorsAndSelf().Elements("LinkID").Select(p => p.Value).Aggregate((i, j) => j + "=>" + i);
        }

它将显示"p1=>s1=>n1">