2016-08-12 80 views
0

我得到了一个来自API的XML文件,我无法读取字段名称。我可以使用下面的代码获取每个字段的值,但我无法弄清楚如何获取字段名称。VB.net XML解析

正如你所看到的一些字段没有一个有时会出现的值而不是其他值,所以我需要知道在哪个字段名称下哪些值。

<?xml version="1.0" encoding="UTF-8"?> 
<sfd:payload mlns:sfd="http://www.wrt.com/types"model="http://ost.bro.com/api/r1"> 
    <sfd:field name="ptp.systemid"> 
    <sfd:value>Waiting for life</sfd:value> 
    </sfd:field> 
    <sfd:field name="ptp..itmid"> 
    <sfd:value>101602175821</sfd:value> 
    </sfd:field> 
    <sfd:field name="ptp.itmsi"> 
    <sfd:value>KTHDBATCHINGSPEED1802-A0ZSTKE2</sfd:value> 
    </sfd:field> 
    <sfd:field name="ptp.info"> 
    <sfd:value>PNC Code 10055017 K4354353534534534345</sfd:value> 
    </sfd:field> 
    <sfd:field name="ptp.start"/> 
    <sfd:field name="ptp.end"/> 
    </sfd:payload> 

Dim xmllines As String = str.ReadToEnd 
str.Close() 

Dim output As StringBuilder = New StringBuilder() 

Using reader As XmlReader = XmlReader.Create(New StringReader(xmllines)) 
    Do While (reader.Read()) 
     Select Case reader.NodeType 
      Case XmlNodeType.Text 'Display the text in each element. 
       ListBox1.Items.Add(reader.Value) 
     End Select 
    Loop 
End Using 
+0

使用'XElement';它_vastly_更易于使用。请注意,您还需要'XNamespace'。 – SLaks

回答

0

在您的XML中,name是一个属性。您可以使用GetAttribute方法。例如:

Using reader As XmlReader = XmlReader.Create(New StringReader(xmllines)) 
     Do While (reader.Read()) 
      Select Case reader.NodeType 
       Case XmlNodeType.Text 'Display the text in each element. 
        Dim fieldName As String = reader.GetAttribute("name") 
        ListBox1.Items.Add(fieldName & " = " & reader.Value) 
      End Select 
     Loop 
    End Using 

当然,声明字符串变量是没有必要的。您可以在任何需要它的地方使用reader.GetAttribute("name")