如何使用XMLTextReader读取完整节点

本文关键字:节点 读取 何使用 XMLTextReader | 更新日期: 2023-09-27 18:37:16

我有这样的东西:

<?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节点文本。这可能吗?

如何使用XMLTextReader读取完整节点

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

如果要加载整个XML,以便可以使用XPath查询,请根据确切的需要改用XmlDocument或XDocument。

这是

可能的;你需要做的是记住起始节点(ConfigDatas)的嵌套级别,然后在嵌套级别更高时循环读取XML(意思是,当你在开始节点下方时)。如果 XML 的其他部分您不关心,这种方法可以节省您的内存,因为如果您只需要几个较小的节点,则不会加载可能太大的整个文档。