使用 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
我对使用 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