Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.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# 按名称读取XML文件_C#_Xml_Linq To Xml - Fatal编程技术网

C# 按名称读取XML文件

C# 按名称读取XML文件,c#,xml,linq-to-xml,C#,Xml,Linq To Xml,我有一个以下格式的XML文件 1440.0000000000不可用不可用不可用不可用0.00000000000.00000000000.00000000000.00000000000.00000000000.00000000000.00000000000.0000000000 这只是一个部分。但如果您注意到名称=“MacroSample\u Head1\u Macro907”。我正在努力解读它的价值。这是7.0。 我试过使用linq string value7 = (string)(XEleme

我有一个以下格式的XML文件

1440.0000000000不可用不可用不可用不可用0.00000000000.00000000000.00000000000.00000000000.00000000000.00000000000.00000000000.0000000000

这只是一个部分。但如果您注意到名称=“MacroSample\u Head1\u Macro907”。我正在努力解读它的价值。这是7.0。 我试过使用linq

string value7 = (string)(XElement.Load("http://B-DVM-4/current")
     .Descendants().FirstOrDefault(d => d.Name.LocalName == "MacroSample_Head1_Macro907"));

但我有点不对劲?

您当前正在尝试查找一个名为
MacroSample\u Head1\u Macro907
的元素,而我相信您确实希望查找一个名为
PartCount
的元素,其属性名为
name
,值为
MacroSample\u Head1\u Macro907

var element = XElement.Load("http://B-DVM-4/current");
XNamespace ns = "urn:mtconnect.org:MTConnectStreams:1.2";
var part = element.Descendants(ns + "PartCount")
                  .First(x => (string) x.Attribute("name") == 
                              "MacroSample_Head1_Macro907")
                  .Value;
(或者您可能希望转换为
十进制
,而不是使用
——可能是十进制值。)

请注意,根元素将名称空间声明为默认名称空间:

<MTConnectStreams ... xmlns="urn:mtconnect.org:MTConnectStreams:1.2" ...>
    ...
</MTConnectStreams>

...

您当前正在尝试查找一个名为
MacroSample\u Head1\u Macro907
的元素,而我相信您确实希望查找一个名为
PartCount
的元素,该元素的属性名为
name
,值为
MacroSample\u Head1\u Macro907

var element = XElement.Load("http://B-DVM-4/current");
XNamespace ns = "urn:mtconnect.org:MTConnectStreams:1.2";
var part = element.Descendants(ns + "PartCount")
                  .First(x => (string) x.Attribute("name") == 
                              "MacroSample_Head1_Macro907")
                  .Value;
(或者您可能希望转换为
十进制
,而不是使用
——可能是十进制值。)

请注意,根元素将名称空间声明为默认名称空间:

<MTConnectStreams ... xmlns="urn:mtconnect.org:MTConnectStreams:1.2" ...>
    ...
</MTConnectStreams>

...

但是我弄错了?
你得到了什么?试试FirstOrDefault(d=>d.Name.LocalName==“MacroSample\u Head1\u Macro907”)。值你得到了元素,但你需要元素的内容。
但是我弄错了什么?
你得到了什么?试试FirstOrDefault(d=>d.Name.LocalName==“宏样本\u头1\u宏907”).Value您正在获取元素,但您需要元素的内容。请原谅我的无知,但是我如何将其作为字符串读取?我正在尝试将此值显示在消息框中。@user2139891:将什么作为字符串读取?部分变量已经是
字符串
变量,就像ori中的
值7
一样基纳尔代码。获取“对象引用未设置为对象实例”exception@user2139891:那么您可能没有
PartCount
元素-也许它实际上在不同的名称空间中?因为您只给了我们XML的一小部分,所以我们无法真正告诉您。@user2139891:(我已将FirstOrDefault更改为First,以明确您确实希望有一个值。)请原谅我的无知,但我如何将其读取为字符串?我正试图将此值显示在消息框中。@user2139891:将什么读取为字符串?
部分
变量已经是一个
字符串
变量,就像原始代码中的
值7
一样。获取一个“对象引用”未设置为对象的实例" exception@user2139891:那么您可能没有
PartCount
元素-也许它实际上在不同的名称空间中?因为您只给了我们XML的一小部分,所以我们无法确定。@user2139891:(不过我已将FirstOrDefault更改为First,以明确您确实希望有一个值。)