You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用XElement按名称获取子元素:提取XML中的Point元素

使用XElement提取XML中的Point元素

当然可以!用XElement处理这类XML结构简直得心应手,我给你两种实用的实现方式,附上代码示例供参考:

准备工作

首先要确保你引用了System.Xml.Linq命名空间,这是使用XElement的前提:

using System.Xml.Linq;

方式1:逐层精准定位

如果你的XML结构固定、层级明确,可以逐层遍历节点找到Point元素,这种方式更精准,还能避免误匹配其他层级的同名元素:

// 你的目标XML字符串
string xmlContent = @"<Folder> 
<name></name> 
<Placemark> 
<name></name> 
<description></description> 
<styleUrl></styleUrl> 
<MultiGeometry> 
<Point> 
<coordinates></coordinates> 
</Point> 
<LineString> 
<coordinates></coordinates> 
<tesselate>1</tesselate> 
</LineString> 
</MultiGeometry> 
</Placemark> 
</Folder>";

// 将XML字符串解析为XElement对象
XElement rootElement = XElement.Parse(xmlContent);

// 逐层查找Point元素,使用*null条件运算符*避免空引用异常
XElement targetPoint = rootElement.Element("Placemark")?
                                  .Element("MultiGeometry")?
                                  .Element("Point");

// 如果找到Point元素,可以进一步提取它的子元素(比如coordinates)
if (targetPoint != null)
{
    string coords = targetPoint.Element("coordinates")?.Value ?? string.Empty;
    // 这里可以添加你的业务逻辑,比如输出或存储coords
}

方式2:全局查找所有Point元素

如果XML结构可能有变化,或者存在多个Point元素,直接用Descendants方法遍历所有子节点,一次性找出所有名为Point的元素会更高效:

// 同样先解析XML为XElement
XElement rootElement = XElement.Parse(xmlContent);

// 获取所有层级下的Point元素集合
IEnumerable<XElement> allPoints = rootElement.Descendants("Point");

// 遍历集合处理每个Point元素
foreach (var point in allPoints)
{
    string coords = point.Element("coordinates")?.Value ?? string.Empty;
    // 处理每个Point的逻辑
}

两种方式各有优势:逐层定位适合结构固定的场景,全局查找更灵活。你可以根据自己的实际需求选择~

内容的提问来源于stack exchange,提问作者Yeasin Abedin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:15:55