C# 带有C的Xml文件无法获取该值
这是我的xml文件C# 带有C的Xml文件无法获取该值,c#,xml,xpath,C#,Xml,Xpath,这是我的xml文件 <?xml version="1.0" encoding="ASCII"?> <Vitals> <Vendor>General Electric Healthcare</Vendor> <Model>Pro/Procare</Model> <Result name="Mean_arterial_pressure"> <Value>86</Value&g
<?xml version="1.0" encoding="ASCII"?>
<Vitals>
<Vendor>General Electric Healthcare</Vendor>
<Model>Pro/Procare</Model>
<Result name="Mean_arterial_pressure">
<Value>86</Value>
<Units name="mmHg"></Units>
<Time_stamp year="2008" month="11" day="18" hour="12" minute="33" second="14"></Time_stamp>
</Result>
<Result name="Systolic_blood_pressure">
<Value>130</Value>
<Units name="mmHg"></Units>
<Time_stamp year="2008" month="11" day="18" hour="12" minute="33" second="14"></Time_stamp>
</Result>
<Result name="Diastolic_blood_pressure">
<Value>67</Value>
<Units name="mmHg"></Units>
<Time_stamp year="2008" month="11" day="18" hour="12" minute="33" second="14"></Time_stamp>
</Result>
<Result name="Pulse">
<Value>73</Value>
<Units name="BPM"></Units>
<Method>blood_pressure</Method>
<Time_stamp year="2008" month="11" day="18" hour="12" minute="33" second="14"></Time_stamp>
</Result>
</Vitals>
我可以知道我的代码出了什么问题吗?总是得不到价值。
我需要从xml文件中获取值。在第5行,您的xPath指定模型是供应商的子模型,而供应商只包含字符串General Electric Healthcare 此外,要使用xPath导航,我建议您使用SelectNodes函数 请尝试以下方法:
XmlNodeList doc_results = xmlDoc.SelectNodes("/Vitals/Model/Result[@name='Systolic_blood_pressure']");
您当前正在尝试检索子节点的名称,而在您的值节点中,它实际上没有这个名称。如果使用,则可以获取文本注释的内容
此外,结果不是模型的子级,而模型不是供应商的子级。您可能希望正确地将它们设置为子对象,或者更改为文档结果设置的路径如果使用LINQ to XML进行此操作,则会更容易
var doc = XDocument.Load("path/to/xml");
var results =
from result in doc.Descendants("Result")
select new
{
Name = (string) result.Attribute("name"),
Value = (string) result.Element("Value"),
Units = (string) result.Element("Units").Attribute("name")
};
如果需要,您可以按名称进行筛选:
var sysBp = results.Single(x => x.Name == "Systolic_blood_pressure");
请参阅,以获取可用的演示。
私有无效btnReadXml\u单击对象发送者,事件参数e
{
var doc=XDocument.LoadC:\\dinamap.xml;
var results=来自doc.degenantsResult中的结果
选择新的
{
Name=stringresult.Attributename,
Value=stringresult.ElementValue,
Units=stringresult.ElementUnits.Attributename
};
foreach var产生结果
{
Show{result.Name}:{result.Value}{result.Units};
}
}如果同时我需要显示所有@name=收缩压、舒张压、舒张压和脉搏,以及he?
var sysBp = results.Single(x => x.Name == "Systolic_blood_pressure");