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

XmlTextReader 旨在遍历 XML 文档。这是非常节省内存的,因为您不会一次创建整个文档的内存表示。如果您有非常大的 XML 文档,则必须以这种方式处理它们。

如果您想加载整个 XML 以便您可以使用 XPath 查询,请使用XmlDocumentXDocument,具体取决于您的具体需求。

于 2012-06-13T16:33:47.583 回答
1

It is possible; what you need to do is remember the nesting level at the start node (ConfigDatas), then read XML in a loop while nesting level is higher (meaning, while you are below the start node). If there are other parts of the XML that you don't care for, this approach can save you memory, since you will not be loading the entire document which could be too large, if you only need a few smaller nodes.

于 2012-06-13T16:41:53.507 回答