C# 按名称读取XML文件
我有一个以下格式的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
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,以明确您确实希望有一个值。)