无法使用C#从xml读取值/节点>> [

问题描述 投票:0回答:1
我正在尝试从以下xml(以前是从FTP获取的)中读取值:

<?xml version="1.0" encoding="utf-8"?> <eventdata xmlns="http://www.demoweb.net/xml/eventdata" > <site> <sitelink>demotesting</sitelink> <user>15101991</user> <measurement> <nodelink>012019120312064500</nodelink> <containername>A1</containername> <time>2020-04-30T11:25:35</time> <value type="n_v_unitvalue">0.04</value> <value type="n_v_unitvalue_diff">0.040</value> </measurement> <measurement> <nodelink>012019120312064501</nodelink> <containername>A2</containername> <time>2020-04-30T11:25:35</time> <value type="n_v_unitvalue">0.0</value> <value type="n_v_unitvalue_diff">-0.001</value> </measurement> <measurement> <nodelink>012019120312064502</nodelink> <containername>A3</containername> <time>2020-04-30T11:25:34</time> <value type="n_v_unitvalue">0.0</value> <value type="n_v_unitvalue_diff">0.000</value> </measurement> </site> <createdate>2020-04-30T11:25:35</createdate> </eventdata>

开始之前,文件已成功加载到内存中:)

您可以看到根节点是eventdata,而site是包含所有数据的节点。因此,基本上我需要循环所有measurement节点并获取数据。

我也很努力地摆脱用户节点的困扰。这是到目前为止我尝试过的工作:

using (StreamReader xml_reader = new StreamReader(xml_response.GetResponseStream())) { string xml = xml_reader.ReadToEnd(); XmlDocument xmldoc = new XmlDocument(); xmldoc.LoadXml(xml); XmlNodeList mainFileContent = xmldoc.SelectNodes("eventdata"); // XmlNodeList mainFileContent = xmldoc.SelectNodes("eventdata/site"); XmlElement root = xmldoc.DocumentElement; if (mainFileContent != null) { foreach (XmlNode node in mainFileContent) { var user = node["user"].InnerText; } } }

我检查了根元素,它实际上是eventdata

enter image description here我无法从xml读取任何内容。这里出了什么问题?

我想念的是什么?

谢谢你们

CHEERS

我正在尝试从以下xml(以前是从FTP获取)中读取值:

c# xml ftp xmldocument
1个回答
0
投票
使用下面的代码读取测量值

using (StreamReader xml_reader = new StreamReader(xml_response.GetResponseStream())) { string xml = xml_reader.ReadToEnd(); XmlDocument xmldoc = new XmlDocument(); xmldoc.LoadXml(xml); var nsmgr = new XmlNamespaceManager(xmldoc.NameTable); nsmgr.AddNamespace("ns", "http://www.demoweb.net/xml/eventdata"); XmlNodeList mainFileContent = xmldoc.SelectNodes("ns:eventdata/ns:site/ns:measurement",nsmgr); XmlElement root = xmldoc.DocumentElement; if (mainFileContent != null) { foreach (XmlNode node in mainFileContent) { var nodelink = node["nodelink"].InnerText; var containername = node["containername"].InnerText; var time = node["time"].InnerText; } } }

© www.soinside.com 2019 - 2024. All rights reserved.