使用 XElement 解析 XML

Parsing XML using XElement

我对使用 VB.NET 解析 XML 还很陌生。我有一些 XML 这种格式(简化视图)

<Range> 
<from>1</from> 
<to>5</to> 
</Range> 

<Range> 
<from>10</from> 
<to>20</to>
</Range>

<Range> 
<from>100</from> 
<to>200</to>
</Range>

可以有任意数量的 <Range> 标签,但每个范围标签下面总会有一个 <from><to> 标签。

我需要生成的是一个字符串,使用上面的示例它看起来像这样

1:1-5;2:10-20;3:100-200

我正在尝试使用 XElement 对此进行解析,但不确定如何继续。我尝试使用 .Descendants("Range") 进行迭代,它确实给了我数字,但我无法将 from 和 to 分开。

任何帮助将不胜感激。

谢谢

好吧,虽然不干净,但我想我得到了一个方法!

我创建了 2 个枚举器,一个用于 Descendants("from"),另一个用于 Descentants("to") 然后,在一个循环中,我可以轻松地构造我的 string

类似这样(打字记忆,语法可能不完整,txt是整个XML的XElement对象)

Dim p as IEnumerable(of Xelement) = txt.Descendants("from")
Dim q as IEnumerable(of Xelement) = txt.Descendants("to")
Dim i as Integer = 0

While i < p.Count
String.Format("{0}:{1}-{2}", i.ToString,p(i),q(i))
End While

基于数据 select 所有范围和格式。我在下面的示例中使用了 System.Text.StringBuilder。

    'your test data
    smpl = <root>
               <Range>
                   <from>1</from>
                   <to>5</to>
               </Range>
               <Range>
                   <from>10</from>
                   <to>20</to>
               </Range>
               <Range>
                   <from>100</from>
                   <to>200</to>
               </Range>
           </root>

    Dim sb As New System.Text.StringBuilder
    Dim ct As Integer = 1
    For Each r As XElement In smpl...<Range>
        sb.AppendFormat("{0}:{1}-{2};", ct, r.<from>.Value, r.<to>.Value)
        ct += 1
    Next
    sb.Remove(sb.Length - 1, 1)

    Dim s As String = sb.ToString

在运行之后=

 1:1-5;2:10-20;3:100-200