0

下面找到我正在使用的 xml 示例和代码。当我使用WhiteSpacehandling = None4 本书时,我只收到 2 本书(每隔一本书)。我发现的解决方案是使用 WhiteSpaceHandling 设置为WhiteSpacehandling = All- 然后我得到 4 条记录,因为在 xml 中的每一行的末尾放置了 CR(回车),因此当参数设置为时,读者以某种方式使用它来正确地从 xml 中获取所有数据WhiteSpacehandling = All。不幸的是,当 XML 文件数据都在一行中时仍然存在问题,那么即使设置WhitespaceHandling to All也无济于事,我会每隔一秒检索一次书籍数据(因为没有 CR)。你知道我该如何处理这个问题吗?即使数据放在一行中,如何始终获取所有数据?

XML 文件:

 <bookstore>
     <book genre="autobiography">
       <title>Potop</title>
       <author>
         <first-name>Benjamin</first-name>
         <last-name>Franklin</last-name>
       </author>
       <price>8.99</price>
     </book>
     <book genre="novel">
       <title>Faraon</title>
       <author>
         <first-name>Herman</first-name>
         <last-name>Melville</last-name>
       </author>
       <price>11.99</price>
     </book>
     <book genre="philosophy">
       <title>Ben Hur</title>
       <author>
         <name>Plato</name>
       </author>
       <price>9.99</price>
     </book>
     <book genre="scifi">
       <title>Terminator1</title>
       <author>
         <name>Plato</name>
       </author>
       <price>9.99</price>
     </book>
   </bookstore>

我正在使用的代码:

 'Create the XML Reader
        Dim reader = New XmlTextReader("books.xml")

        reader.WhitespaceHandling = WhitespaceHandling.All  'WhitespaceHandling.None   '<----------


        Do While (reader.Read())
             If reader.IsStartElement And reader.NodeType = XmlNodeType.Element And reader.Name = "book" Then
            Console.WriteLine(reader.ReadOuterXml)
        End If
            End If

        Loop

图片1:

在此处输入图像描述

图二:

在此处输入图像描述

4

2 回答 2

1
于 2015-08-24T16:48:39.133 回答
0

这将解决问题 - 在这种情况下,我可以手动控制线路移动,因此每隔一排就会跳过一次。

 Using reader As XmlReader = XmlReader.Create("mybooks.xml")

                Do While Not reader.EOF
                    If reader.NodeType = XmlNodeType.Element And reader.Name = "book" And reader.IsStartElement Then


                        Dim line As String = reader.ReadOuterXml
                        Console.WriteLine(line)
                    Else
                        reader.Read()
                    End If
                Loop
            End Using
于 2015-08-25T08:02:14.480 回答