我有这样的事情:
<?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节点(我只能用read来做),但是当我得到例如ConfigDatas节点时,能够立即读取所有ArrayOfConfigData节点文本。这可能吗?
答案 0 :(得分:1)
XmlTextReader旨在迭代XML文档。这非常节省内存,因为您不会立即创建整个文档的内存中表示。如果您有非常大的XML文档,则必须以这种方式处理它们。
如果您希望加载整个XML,以便可以例如使用XPath查询,改为使用XmlDocument或XDocument,具体取决于您的具体需求。
答案 1 :(得分:1)
有可能;您需要做的是记住起始节点(ConfigDatas)的嵌套级别,然后在循环中读取XML,而嵌套级别更高(意味着,当您位于起始节点之下时)。如果您不关心XML的其他部分,这种方法可以节省您的内存,因为如果您只需要一些较小的节点,您将不会加载整个文档太大。