c# - 使用 LINQ 解析对象内部对象列表中的 Xml 对象

标签 c# xml linq parsing

XML 文件

<Lines>
    <LineEntity>
      <Id>33947</Id>
      <Name>SEC_137438957044</Name>
      <IsUnderground>true</IsUnderground>
      <R>0.209</R>
      <ConductorMaterial>Steel</ConductorMaterial>
      <LineType>Cable</LineType>
      <ThermalConstantHeat>2400</ThermalConstantHeat>
      <FirstEnd>41990</FirstEnd>
      <SecondEnd>41992</SecondEnd>
      <Vertices>
        <Point>
          <X>407566.68007470988</X>
          <Y>5013899.3558040857</Y>
        </Point>
        <Point>
          <X>407625.00589398207</X>
          <Y>5013876.8697334668</Y>
        </Point>
        <Point>
          <X>407717.51971015992</X>
          <Y>5014160.9525629422</Y>
        </Point>
        <Point>
          <X>407559.40091708023</X>
          <Y>5014220.4665799234</Y>
        </Point>
      </Vertices>
    </LineEntity>
</Lines>

我想用 Points 获取这个 Vertices 对象,但我不知道如何获取它。到目前为止我尝试了什么:

var lines = xdoc.Descendants("LineEntity")
                 .Select(line => new Line
    {
        Id = (double)line.Element("Id"),
        Name = (string)line.Element("Name"),
        ConductorMaterial = (string)line.Element("ConductorMaterial"),
        IsUnderground = (bool)line.Element("IsUnderground"),
        R = (decimal)line.Element("R"),
        FirstEnd = (int)line.Element("FirstEnd"),
        SecondEnd = (int)line.Element("SecondEnd"),
        LineType = (string)line.Element("LineType"),
        ThermalConstantHeat = (int)line.Element("ThermalConstantHeat"),
        Vertices = line.Descendants("Vertices").Select(p => new Point {
        X = (decimal)p. //can't access Element
    })
}).ToList();

最佳答案

这是代码:

 ThermalConstantHeat = (int)line.Element("ThermalConstantHeat"),
 Vertices = line.Element("Vertices").Descendants("Point").Select(p => new TokenController.Point
 {
     X = (decimal)p.Element("X"),
     Y = (decimal)p.Element("Y")//can't access Element
 }).ToList()

您必须先找到Element("Vertices"),然后再找到Descendants("Point") List

关于c# - 使用 LINQ 解析对象内部对象列表中的 Xml 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54663306/

相关文章:

LINQ: 自连接查询,如何实现?

c# - 如何在 C# 中使用 linq 在充满分数的数据库表中选择前十名分数

c# - 如何读取 ".doc"文件或如何使用 ASP.NET 将其转换为 ".docx"

c# - 如何在 Azure 搜索中允许自定义分析器使用通配符

java - 单击按钮后更新按钮文本

xml - 如何为每个测试引用 XSL 中的当前节点值?

java - JAXB继承+XMLAdapter(HashMap)

c# - 如果 users.Claims 包含等于参数的声明 (LINQ),则为 linq 语句

C# 从列表中获取可能的 DISTINCT 组合

c# - 使用 Properties.Settings.Default 和设置备用配置文件?