c# – XDocument Root.Elements()返回null
发布时间:2020-12-15 23:22:37 所属栏目:百科 来源:网络整理
导读:我正在尝试解析通过运行单元测试生成的xml文件,但xml.Root.Elements()将出现为null. 这里是xml的一个示例: ?xml version="1.0" encoding="UTF-8"?TestRun id="2ece436d-907d-4f59-9c81-0544b2f4f7cd" name="redacted" runUser="redacted" xmlns="http://mic
我正在尝试解析通过运行单元测试生成的xml文件,但xml.Root.Elements()将出现为null.
这里是xml的一个示例: <?xml version="1.0" encoding="UTF-8"?> <TestRun id="2ece436d-907d-4f59-9c81-0544b2f4f7cd" name="redacted" runUser="redacted" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010"> <TestSettings name="Default Test Settings" id="e00bb4af-1518-4b40-9905-19fa7b190f68"> ... </TestSettings> <Times creation="2015-02-18T11:47:02.7188640-05:00" queuing="2015-02-18T11:47:03.1819103-05:00" start="2015-02-18T11:47:03.2819203-05:00" finish="2015-02-18T11:47:05.5571478-05:00" /> <ResultSummary outcome="Failed"> <Counters total="74" executed="74" passed="73" error="0" failed="1" timeout="0" aborted="0" inconclusive="0" passedButRunAborted="0" notRunnable="0" notExecuted="0" disconnected="0" warning="0" completed="0" inProgress="0" pending="0" /> </ResultSummary> 我想要检索< ResultSummary>的结果,但是对xml.Root的所有Element()和Elements()调用都返回null. var xml = XDocument.Load(resultFile); var outcome = xml.Root .Element("TestRun") .Element("ResultSummary") .Attribute("outcome") .Value; 我尝试添加像this answer中的命名空间,但我仍然得到相同的结果: var xml = XDocument.Load(resultFile); XNamespace ns = "http://microsoft.com/schemas/VisualStudio/TeamTest/2010"; var outcome = xml.Root .Element(ns + "TestRun") .Element("ResultSummary") .Attribute("outcome") .Value; 另外,我不确定Root是否应该返回< TestRun>我是否尝试过运行xml.Root.Element(“ResultSummary”),我仍然得到null. 我该如何阅读这个xml文件? 解决方法
首先,XDocument.Root获取XML树的根元素.在你的情况下,它是TestRun.
并且,为了从本地名称和命名空间获取对象,您可以使用XName.Get(string,string)方法: 因此,将代码更改为: string ns = "http://microsoft.com/schemas/VisualStudio/TeamTest/2010"; var outcome = xml.Root .Element(XName.Get("ResultSummary",ns)) .Attribute("outcome") .Value; 结果是:失败 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |