【问题标题】:Querying the nested xml using linq by specifying attribute value通过指定属性值使用 linq 查询嵌套的 xml
【发布时间】:2015-04-08 04:12:17
【问题描述】:

我的 xml 架构是这样的:

  <TestSuite>

  <TestCase Name="Connect">
    <Input>
      <AppName>XYZ</AppName>
      <UserId>Vishwas</UserId>    
    </Input>
  </TestCase>

  <TestCase Name="Create">
    <Input>
      <FileName>abc</AppName>    
    </Input>
    <OutPut>
      <Filesize></Filesize>
  </TestCase>  

 <TestSuite>

如何编写一个 LINQ to XML 查询来检索 UserId 的值,该值存在于测试用例名称“Connect”中,我是 linq 新手,期待您的帮助和提前感谢。

【问题讨论】:

    标签: c# linq linq-to-xml


    【解决方案1】:

    首先你的 XML 格式不正确,我已经在代码中更正了,相应地进行更改。

    您可以通过从 TestCaseUserId 来做到这一点,如下所示:-

    var xdoc = XDocument.Parse(@"<TestSuite><TestCase Name=""Connect""><Input>
     <AppName>XYZ</AppName><UserId>Vishwas</UserId></Input></TestCase>
     <TestCase Name=""Create""><Input><FileName>abc</FileName></Input><OutPut>
     <Filesize></Filesize></OutPut></TestCase></TestSuite>");
    
    string userid = (xdoc.Descendants("TestCase")
                         .Where(x => (string)x.Attribute("Name") == "Connect")
                         .Select(x => (string)x.Element("Input").Element("UserId")))
                         .FirstOrDefault();
    

    或者您可以选择Input 节点,然后您可以像这样过滤和选择项目:-

    string userid = (from x in xdoc.Descendants("Input")
                     where (string)x.Parent.Attribute("Name") == "Connect"
                     select (string)x.Element("UserId")).FirstOrDefault();
    

    【讨论】:

    • @VishwasCheluvaN - 不客气!如果有帮助,请接受它作为答案..:-)
    猜你喜欢
    • 1970-01-01
    • 2018-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    相关资源
    最近更新 更多