1

私はこのようなものを持っています:

<?xml version="1.0" encoding="utf-8"?>
<Data>
    <ConfigDatas>
        <ArrayOfConfigData xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/BTTest.Models">
            <ConfigData>
                <id>4</id>
                <ip>111111</ip>
                <port>34</port>
            </ConfigData>
            <ConfigData>
                <id>0</id>
                <ip>222222</ip>
                <port i:nil="true" />
            </ConfigData>
        </ArrayOfConfigData>
    </ConfigDatas>
    <OtherTypeDatas>
        <ArrayOfConfigData ...>
            ....
        </ArrayOfConfigData>
    <OtherTypeDatas>
</Data>

xml を解析して ConfigDatas ノードと OtherTypeDatas ノードを取得したいのですが (読み取りだけでこれを行うことができます)、たとえば ConfigDatas ノードを取得すると、すべての ArrayOfConfigData ノード テキストを一度に読み取ることができます。これは可能ですか?

4

2 に答える 2

1

可能です; 必要なのは、開始ノード (ConfigDatas) でのネスト レベルを記憶し、ネスト レベルが高い間 (つまり、開始ノードの下にいる間) に XML をループで読み取ることです。気にしない XML の他の部分がある場合、いくつかの小さなノードのみが必要な場合、大きすぎる可能性があるドキュメント全体をロードしないため、この方法でメモリを節約できます。

于 2012-06-13T16:41:53.507 に答える
1

XmlTextReader は、XML ドキュメントを反復処理するように設計されています。ドキュメント全体のメモリ内表現を一度に作成しないため、これはメモリ効率が非常に高くなります。非常に大きな XML ドキュメントがある場合は、この方法で処理することが不可欠です。

たとえば XPath クエリを使用できるように XML 全体をロードしたい場合は、正確なニーズに応じて、代わりにXmlDocumentまたはXDocumentを使用してください。

于 2012-06-13T16:33:47.583 に答える