2016-08-12 27 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'を使用します。それは非常に使いやすいです。 '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 

もちろん、変数stringを宣言する必要はありません。どこでも必要な場所にreader.GetAttribute("name")を使用できます。