【发布时间】:2018-05-07 20:10:35
【问题描述】:
我正在尝试从 xml 文件中读取和存储数据。我一直在阅读有关读取数据的各种方法,例如 XmlReader、XmlTextReader、LinQ 等。 我的 XML 文件是
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<circuit name="local">
<Device>device1</Device>
<Point>point1></Point>
</circuit>
<circuit name ="remote">
<Device>device2</Device>
<Point>point2</Point>
</circuit>
</configuration>
我正在尝试提取设备和点集,以便将它们传递给数据库查询。我使用此代码和 foreach 循环来验证内容,但它只获取第一组。
XDocument msrDoc = XDocument.Load("BNOC MSR.config");
var data = from item in msrDoc.Descendants("circuit")
select new
{
device = item.Element("Device").Value,
point = item.Element("Point").Value
};
foreach (var p in data)
Console.WriteLine(p.ToString());
我也试过这个,但是我的数组都是空的
String[] deviceList = new String[1];
String[] pointList = new String[1];
int n = 0;
XmlDocument msrDoc = new XmlDocument();
msrDoc.Load("BNOC MSR.config");
var itemNodes = msrDoc.SelectNodes("circuit");
foreach (XmlNode node in itemNodes)
{
var circuit = node.SelectNodes("circuit");
foreach (XmlNode cir in circuit)
{
deviceList[n] = cir.SelectSingleNode("Device").InnerText;
pointList[n] = cir.SelectSingleNode("Point").InnerText;
}
}
任何帮助将不胜感激。
【问题讨论】:
-
两个注意事项:a)您的 XML 在技术上无效(在您的第一点上的流浪 > 应转义为 >)和 b)在 VS2017/.NET 4.6.2 中我无法重现问题 - 我使用您粘贴的第一个代码块获取这两个元素。您使用的是哪个版本的 .NET?我看到你用 VS2008 标记了它,它是......好吧,说实话......老了。
-
第一个代码 sn-p 看起来不错。我粘贴到 VS 中,它似乎正在工作,我正在从两个节点获取输出。
标签: c# xml visual-studio linq visual-studio-2008