c# - 如何从 xml 文件中读取多个属性
问题描述
我有以下xml:
<?xml version="1.0" encoding="UTF-8"?>
<TestRun id="2fc10ef6-b97f-49e5-a58d-863dfb599cb3" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
<Times creation="2019-08-26T11:27:34.3642040+00:00" queuing="2019-08-26T11:27:34.3642190+00:00" start="2019-08-26T11:27:29.1640690+00:00" finish="2019-08-26T11:29:28.0320260+00:00" />
<TestSettings name="default" id="3c3c8ad0-9076-4c83-a283-03f5490f906b">
<Deployment runDeploymentRoot="_9e3d0007c2b9 2019-08-26 11:27:34" />
</TestSettings>
<Results>
<UnitTestResult testName="FirstName" outcome="Passed" testListId="1">
<Output>
</Output>
</UnitTestResult>
<UnitTestResult testName="SecondName" outcome="Passed" testListId="2">
<Output>
</Output>
</UnitTestResult>
<UnitTestResult testName="Thirdname" outcome="Passed" testListId="3">
<Output>
</Output>
</UnitTestResult>
</Results>
</TestRun>
我有以下课程:
{
public string testName { get; set; }
public string outcome { get; set; }
}
public DtoHeader ReadXmlFile()
{
var binDirectory = Path.GetDirectoryName(GetType().GetTypeInfo().Assembly.Location);
var file = Path.Combine(binDirectory, "myfile.xml");
var xDocument = XDocument.Load(file);
XmlNamespaceManager nameSpaceManager = new XmlNamespaceManager(new NameTable());
nameSpaceManager.AddNamespace("ns", "http://microsoft.com/schemas/VisualStudio/TeamTest/2010");
var items = xDocument.Root.XPathSelectElements("./ns:Results", nameSpaceManager).ToArray();
if (!items.Any())
{
}
return new DtoHeader
{
testName = items.Descendants().Attributes("testName").First().Value,
};
}
我想提取属性 testName 和结果的值并将这些值放在一个列表中。但是,在经历了多个示例之后,我无法做到这一点。
解决方案
要获取DtoHeaders
使用 Linq2Xml 的列表,您可以使用以下方法:
var headers = xDocument.Root.XPathSelectElements("./ns:Results", nameSpaceManager)
.Elements()
.Select(x => new DtoHeader
{
testName = x.Attribute("testName").Value,
outcome = x.Attribute("outcome").Value
})
.ToList();
推荐阅读
- ionic-framework - 为什么不显示我的 ion-select 的默认值?
- c++ - clang-cl PCH 缺少标头包含错误
- jenkins - 如何使用 Jenkins 管道脚本在远程服务器上签出存储库?
- laravel - 硬刷新后显示数据
- python - 如何修复错误“TypeError:forward()... - CUDA
- android - 如何从 Firebase 存储中的下载链接获取文件名?
- javascript - 用javascript更改所有对象的属性
- c# - Dapper、XmlDocument 和西里尔符号
- asp.net - 从非注册班级获得服务
- php - 如何将状态为0的更新为1?