gpt4 book ai didi

c# - 如何在 XML 的子节点中查找属性值?

转载 作者:行者123 更新时间:2023-11-30 22:13:42 32 4
gpt4 key购买 nike

我有一个具有以下结构的 XML:

<Results>
<TestResultAggregation testName="MyOrder">
<Counters error="0" failed="1" timeout="0" aborted="0" inconclusive="0"/>
<InnerResults>
<UnitTestResult testName="TestMethod3" outcome="Failed">
<Output>
<ErrorInfo>
<Message>Assert.Fail failed. </Message>
<StackTrace>
at Random.UnitTest1.TestMethod3()
</StackTrace>
</ErrorInfo>
</Output>
</UnitTestResult>
<UnitTestResult testName="TestMethod2" outcome="Passed">
<Output>
</Output>
</UnitTestResult>
</InnerResults>
</TestResultAggregation>

当“UnitTestResult”中“结果”属性的结果为“失败”时,我还必须显示“ErrorInfo”和“StackTrace”节点的值。这里要注意的是上面的模式不是固定的。例如,

<Results>
<UnitTestResult testName="TestMethod3" outcome="Failed">
<Output>
<ErrorInfo>
<Message>Assert.Fail failed. </Message>
<StackTrace>
at Random.UnitTest1.TestMethod3()
</StackTrace>
</ErrorInfo>
</Output>
</UnitTestResult>
<UnitTestResult testName="TestMethod2" outcome="Passed">
<Output>
</Output>
</UnitTestResult>

上述模式也可以动态生成。

如何用C#写出上述需求的代码??

最佳答案

将 LINQ2XML 与 Descendants 结合使用方法..

XDocument doc=XDocument.Parse(xmlstr);
var result=doc.Descendants().Elements("UnitTestResult")
.Where(x=>x.Attribute("outcome").Value=="Failed")
.Select(x=>
new
{
Message=x.Element("Output")
.Element("ErrorInfo")
.Element("Message").Value,
StackTrace=x.Element("Output")
.Element("ErrorInfo")
.Element("StackTrace").Value
});

现在您可以遍历 result

foreach(var error in result)
{
error.Message;
error.StackTrace;
}

关于c# - 如何在 XML 的子节点中查找属性值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18892469/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com