2013-02-07 69 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