对于使用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>
标签,但是每个Range标签下面总会有一个<from>
和<to>
标签。
我需要产生的是一个字符串,使用上面的示例,它将看起来像这样
1:1-5;2:10-20;3:100-200
我正在尝试使用XElement对此进行解析,但是不确定如何进行。我尝试使用.Descendants("Range")
进行迭代,该迭代确实为我提供了数字,但我无法分离出from和to。
任何帮助将不胜感激。
谢谢
答案 0 :(得分:1)
根据数据选择所有范围和格式。在下面的示例中,我使用了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
运行s =
之后 1:1-5;2:10-20;3:100-200
答案 1 :(得分:0)
好吧,认为我有一个方法,尽管它不干净!
我创建2个枚举器,一个用于Descendants("from")
,另一个用于Descentants("to")
然后,在一个循环中,我可以轻松地构造我的字符串
类似的事情(键入内存,语法可能不完整,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