2013-02-07 70 views
1

我需要讀取一個XML文件,但是在這種情況下,它跳過了一些像「link」這樣的元素,我放了一個斷點,並且發現IsStartElement在鏈接元素時爲false。 有什麼想法?閱讀XML文件時出錯

Dim reader As XmlReader = XmlReader.Create(New StringReader(Xml), settings) 

While reader.Read() 
    If reader.IsStartElement Then 
     Select Case reader.Name 
      Case "title" 
       title = reader.ReadElementContentAsString() 
      Case "link" 
       link= reader.ReadElementContentAsString() 
     End Select 
    End If 
End While 

XML文件

<title> title 1 </title> 
<link>link 1 </link> 
+0

這是完整的XML文件,還是隻是它的一個片段? –

+0

只是一個片段,我想添加如果我評論{案例「標題」}我得到了案例「鏈接」,但我沒有他們兩個 – user1187282

+2

你可以發佈一個完整的,示例XML文檔失敗?我只是通過在根元素下創建具有這兩個元素的文檔來測試它,並且代碼工作正常。 –

回答

0

你不讀結束元素。

這應該是一起的(僞)線的東西:

if not reader.IsEmptyElement 
    reader.ReadStartElement() 
    value = reader.ReadContentAsSomething() 
    reader.ReadEndElement() 
else 
    reader.Skip() 

您缺少IsEmptyElementReadEndElement和檢查。

+0

我不明白你能解釋更多。 – user1187282

+0

這個想法是消耗整個元素,以便下次讀取時,您將位於下一個兄弟(如果存在)的開始位置。如果你沒有使用IsEmptyElement檢查它們,然後跳過它們,空元素可能會中斷流程。另外,注意空白元素 - 通常最好在設置中設置「IgnoreWhitespace = True」。 – Alex