【问题标题】:Is it possible to get a single element from XMl with the lowest value?是否可以从 XMl 中获取具有最低值的单个元素?
【发布时间】:2023-03-29 22:15:01
【问题描述】:

我已经成功创建了一个xml文件,格式如下:

    <?xml version="1.0" encoding="utf-8" standalone="yes"?>
<VDZ>
  <Circuits>
    <Circuit>
      <Phases>1</Phases>
      <Size>4mm</Size>
      <Core>Cu</Core>
      <Ins>PVC</Ins>
      <Len>7</Len>
      <Table>T42</Table>
      <Temp>75</Temp>
      <Earth>NIL</Earth>
      <Points>
        <P ID="0" X="156" Y="132" />
        <P ID="1" X="156" Y="120" />
      </Points>
    </Circuit>
    <Circuit>
      <Phases>1</Phases>
      <Size>4mm</Size>
      <Core>Cu</Core>
      <Ins>PVC</Ins>
      <Len>7</Len>
      <Table>T42</Table>
      <Temp>75</Temp>
      <Earth>NIL</Earth>
      <Points>
        <P ID="0" X="254" Y="72" />
        <P ID="1" X="264" Y="72" />
      </Points>
    </Circuit>
  </Circuits>
</VDZ>

我只是想知道是否可以根据最低 x 值选择单个元素(鉴于我可能有数百个电路元素。

我知道如何将所有点收集为一个列表,但不知道如何将实际元素作为一个整体。请问有人可以提供一些建议吗?我实际上没有代码,因为我找不到远程关闭的示例,所以我开始认为这是无法实现的。感谢任何可以为我指明正确方向的人..

【问题讨论】:

    标签: xml vb.net linq


    【解决方案1】:

    将 Xml linq 与 OrderBy 结合使用。该代码使用 Min 来获取点数组中的最低 X 值:

    Imports System.Xml
    Imports System.Xml.Linq
    Module Module1
        Const FILENAME = "c:\temp\test.xml"
        Sub Main()
            Dim doc As XDocument = XDocument.Load(FILENAME)
    
            Dim lowestX As XElement = doc.Descendants("Circuit") _
               .OrderBy(Function(x) x.Descendants("P").Min(Function(y) CType(y.Attribute("X"), Integer))) _
               .FirstOrDefault()
    
        End Sub
    End Module
    

    【讨论】:

    • jdweng... 几乎。不幸的是,XElement 中的第二对可能具有最低的 X,但我从没想过使用 orderby……作为我的 LINQ 语句的一部分,我被困在最低限度。感谢您为我指明正确的方向。虽然不是答案,但它是我正在寻找的指导。干杯伙伴!
    • 然后使用以下代码:.OrderBy(Function(x) x.Descendants("P").Min(Function(y) CType(y.Attribute("X"), Integer)))
    猜你喜欢
    • 1970-01-01
    • 2016-11-30
    • 1970-01-01
    • 1970-01-01
    • 2017-01-27
    • 1970-01-01
    • 1970-01-01
    • 2022-06-20
    • 1970-01-01
    相关资源
    最近更新 更多