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 に答える