gpt4 book ai didi

c# - 使用 LINQ 从 XML 文件中选择元素

转载 作者:数据小太阳 更新时间:2023-10-29 02:01:38 25 4
gpt4 key购买 nike

我有这个 XML 结构:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>My Work</name>
<Placemark>
<name>Main Building</name>
<Polygon>
<extrude>1</extrude>
<altitudeMode>relativeToGround</altitudeMode>
<outerBoundaryIs>
<LinearRing>
<coordinates>
</coordinates>
</LinearRing>
</outerBoundaryIs>
</Polygon>
</Placemark>

<Placemark>
<name>Office 1</name>
<Polygon>
<extrude>1</extrude>
<altitudeMode>relativeToGround</altitudeMode>
<outerBoundaryIs>
<LinearRing>
<coordinates>
</coordinates>
</LinearRing>
</outerBoundaryIs>
</Polygon>
</Placemark>
</Document>
</kml>

这继续......

我需要为它们中的每一个选择建筑物“名称”并将其存储在列表中。我写了这段代码:

using System;
using System.Linq;
using System.Xml;
using System.Xml.Linq;
using System.Collections.Generic;

namespace dsdsdsds
{
public class Building
{
public string BuildingName { get; set; }
}

class MainClass
{
public static void Main(string[] args)
{
List<Building> buildingNames =
(from e in XDocument.Load("buildings.kml").Root
.Elements("Document")
select new Building
{
BuildingName = (string)e.Element("name")
}).ToList();

foreach (var e in buildingNames)
{
Console.WriteLine(e);
}
}
}
}

但是,它似乎并不想输出任何东西,我也找不到哪里出错了。谁能帮帮我?

谢谢

最佳答案

您忘记了在您的 xml 中声明的 namespace :

var xdoc = XDocument.Load("buildings.kml");
XNamespace kml = "http://www.opengis.net/kml/2.2";
var buildings = xdoc.Root.Elements(kml + "Document")
.Select(d => new Building {
BuildingName = (string)d.Element(kml + "name")
}).ToList();

关于c# - 使用 LINQ 从 XML 文件中选择元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14501196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com