Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 带有C的Xml文件无法获取该值_C#_Xml_Xpath - Fatal编程技术网

C# 带有C的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文件

<?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");