我正在使用Linq将一个简单的XML文件解析为var(可相关的),我正在将数据输出到单独的字符串变量中。我正在使用一个简单的foreach循环(只有一个结果),但它并没有输出任何东西。这是我正在使用的代码;
XElement xmlResults = XElement.Parse(e.Result);
var timerresult = from timers in xmlResults.Descendants("e2simplexmlresult")
select new GetResult
{
e2state = timers.Element("e2state").Value,
e2statetext = timers.Element("e2statetext").Value
};
foreach (var item in timerresult)
{
Debug.WriteLine(item.e2state);
Debug.WriteLine(item.e2statetext);
}
有什么东西我做得不对,这是达到预期效果的最好方法吗?
编辑:这是XML;
<e2simplexmlresult>
<e2state>False</e2state>
<e2statetext>Conflicting Timer(s) detected! / A Place in the Sun: Home or Away / Goals On Sunday</e2statetext>
</e2simplexmlresult>
答案 0 :(得分:1)
您可以将XElement更改为XDocument,或者仍将XElement与DescendantsAndSelf(...)结合使用。通过使用XElement,“e2simplexmlresult”标记不是结果的一部分,因此没有后代。使用DescendantsAndSelf()或使用XDocument克服了这个问题。
答案 1 :(得分:0)
在查看了您的示例xml之后,我编写了以下代码(在LinqPad中)并运行良好:
XElement xml = XElement.Parse(@"<e2simplexmlresult>
<e2state>False</e2state>
<e2statetext>Conflicting Timer(s) detected! / A Place in the Sun: Home or Away / Goals On Sunday</e2statetext>
</e2simplexmlresult>");
GetTest test = new GetTest()
{
e2state = xml.Elements().Where(x => x.Name == "e2state").First().Value,
e2statetext = xml.Elements().Where(x => x.Name == "e2statetext").First().Value,
};
Console.WriteLine(test.e2state);
Console.WriteLine(test.e2statetext);
尝试看看这里给出的逻辑,可以对你有所帮助。