[英]Parse xml by Xdocument
我有一个简单的xml文件:
<?xml version="1.0" encoding="utf-8" ?>
<Parameters>
<Valid>
<SetSensorParameter>
<param paramid="1" value_p="15" size="16"/>
<param paramid="2" value_p="22" size="8"/>
</SetSensorParameter>
</Valid>
</Parameters>
我需要获取以下属性的值:
<param paramid="1" value_p="15" size="16"/>
<param paramid="2" value_p="22" size="8"/>
我有下一个代码:
var doc = XDocument.Load(path);
var smth = doc.Element("Parameters").Element("Valid").Element("SetSensorParameter").Nodes();
, but i can't get values of . 我可以访问两个 ,但是无法获取值 。
我该怎么办?
与使用Nodes
,使用Elements
会更简单,因此您可以使用Attribute
方法来检索每个属性:
var parameters = doc.Root
.Element("Valid")
.Element("SetSensorParameters")
.Elements("param");
foreach (var parameter in parameters)
{
Console.WriteLine("{0}: {1} {2}",
(int) parameter.Attribute("paramid"),
(int) parameter.Attribute("value_p"),
(int) parameter.Attribute("size"));
}
在这里,强制类型转换将每个属性值解析为一个int
; 其他类型也可以使用类似的转换。
您还可以通过以下方式获取属性值:
var attributes = doc.Root.Descendants()
.Where(elem => elem.HasAttributes)
.SelectMany(e => e.Attributes());
foreach (var attr in attributes)
Console.WriteLine("Name: {0}, value: {1}", attr.Name, attr.Value);
var doc = XDocument.Load(path);
var parameters = doc.Root
.Element("Valid")
.Element("SetSensorParameter")
.Element("param");
我可以用
var doc = XDocument.Load(path);
var parameters = doc.Root
.Element("Valid")
.Element("SetSensorParameter")
.Element("param").Attributes();
在那之后
parameters.ElementsAfterSelf.Attributes();
抱歉,我的Visual Studio不想使用参数进行foreach。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.