2013-04-15 95 views
2

我想解析XML字符串,像這樣的:解析XML得到節點值

<Folk id="4630" country="US" name="Marry" />

(這是擺在富文本編輯器)

並獲取idcountryname值。

什麼有我想:

Dim content As String = Me.RichTextBox1.Text 
Dim doc As New System.Xml.XmlDocument 

Try 
     doc.LoadXml(content) 
Catch ex As Exception 
     Label2.Text = "No XML Elements!!!!" 
End Try 

Dim items = doc.GetElementsByTagName("Folk") 

For Each item As System.Xml.XmlElement In items 
    Dim id As String = item.ChildNodes(0).InnerText() 
    MsgBox(id) 'Try to prompt a message box containing the id="" 
Next 

它與一個錯誤顯示出來結束了:NullReferenceException was unhandled. - 它不發現id那裏,所以我不處理此錯誤,首先,我想獲得正確的回報,那麼我會處理,如果沒有發現任何東西。那爲什麼它不返回Folkid=""?對節點的訪問是否錯誤?

回答

1

問題是您在嘗試在解析XML後引用XML的方式。

嘗試改變這一行:

Dim id As String = item.ChildNodes(0).InnerText() 

以下幾點:

Dim id As String = item.Attributes(0) 

countryname將是:

Dim country As String = item.Attributes(1) 
Dim name As String = item.Attributes(2) 

編輯:對不起,我說的C#和vb.net在同一時間即現在修好了。

+0

是的。你是對的,但是如果有多個'',它只是讀取第一個。 ': - /'但是至少它的工作...... – Lucas

+0

我想如果有很多''條目,那麼他們應該被正確包裝在''裏,然後你會參考個別的'ChildNodes(x)'你最初的嘗試方式。合理? –

+0

語法會變成:'Dim id As String = item.ChildNodes(0).Attributes(0)' –