MY 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的值,该值存在于测试用例名称和#34; Connect&#34;中,我是linq的新手,希望得到您的帮助并提前感谢。
答案 0 :(得分:0)
首先,你的XML格式不正确,我已经在代码中更正了,相应地更改了它。
你可以这样做:TestCase
到UserId
这样: -
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();