跳过读取某个父节点内的 xml 元素
本文关键字:xml 元素 父节点 读取 | 更新日期: 2023-09-27 18:32:46
我正在使用xmlreader.read((读取xml gps数据。我想输出所有不在线元素内的坐标点。下面包含在文件中,我想排除列出的坐标。
<place>
<desc>home</desc>
<line>
<coordinate>123,123,123</coordinate>
<coordinate>1223,1223,22123</coordinate>
</line>
</place>
这是一个有效坐标的示例,我想输出和处理(全部位于同一个文件中(:
<place>
<desc>home</desc>
<point>
<coordinate>123,123,123</coordinate>
</point>
</place>
区别在于一个是线对象的一部分,另一个是点。我目前有这个代码,它抓住了一切。
while (lxmlReader.Read())
{
if (lxmlReader.NodeType == XmlNodeType.Element)
{
if (lxmlReader.Name == "coordinate")
{
rtxtOutput.Text += "'r'nElement Name: " + lxmlReader.Name.ToString();
rtxtOutput.Text += " Value: " + lxmlReader.ReadInnerXml().ToString();
}
}
}
我不确定如何使用 XmlReader 执行此操作(或者是否可能( - 您是否考虑过将 XML 加载到 XmlDocument 或 XDocument 对象中,这将允许您对其执行正确的查询。
然后,您可以执行以下操作:
XmlDocument doc = new XmlDocument();
doc.Load("path.xml");
foreach (XmlElement pointCoord in doc.SelectNodes("/place/point/coordinate"))
{
/Do something
}
您会在线找到许多使用 XPath 根据父节点等选择节点的示例。
如果您有可用的 LINQ,我会做这样的事情:
IEnumerable<string> coords = XElement.Load("gps.xml")
.Descendants("point")
.Descendants("coordinate")
.Select(c => c.Value);