0

我有这个非常简单的和平代码和一个简单的 XML 文件。我正在读取每个节点并将其写入另一个文件,并且真正让 xml 阅读器跳过每个备用记​​录节点。它从以下文件写入第 1 和第 3 个节点!任何帮助表示赞赏。

Do While (reader.Read())
    If (reader.NodeType = XmlNodeType.Element And (reader.LocalName = "record" Or reader.LocalName = "record1")) Then
        writer.WriteNode(reader, True)
        writer.Flush()
    End If
Loop

-

<?xml version="1.0" encoding="UTF-8"?>
<records xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="world-check.xsd">
    <record>
        <foo>
            <bar>wtf3</bar>
            <bar>wtf4</bar>
        </foo>
    </record>
    <record>
        <foo>
            <bar>wtf4</bar>
            <bar>wtf5</bar>
        </foo>
    </record>
</records>
4

1 回答 1

1

原谅我的 VB,我几乎是纯粹的 C# 开发人员。

XmlWriter.WriteNode() 为您写入的节点在 EndElement 节点之后执行 XmlReader.Read(),因此当您回到 While 循环的开头时,您会读取下一个 Record 节点。

试试这个:

Dim reader As XmlTextReader = New XmlTextReader("1.xml")
Dim writer As XmlTextWriter = New XmlTextWriter("2.xml", Nothing)
reader.WhitespaceHandling = WhitespaceHandling.None

Dim reading as boolean = reader.Read()

Do While (reading)    
    If (reader.NodeType = XmlNodeType.Element And (reader.LocalName = "record" Or reader.LocalName = "record1")) Then
        writer.WriteNode(reader, True)
        writer.Flush()
    Else
        reading = reader.Read()
    End If
Loop
于 2012-07-20T00:39:18.107 回答