ReadToFollowing XML Large File

本文关键字:File Large XML ReadToFollowing | 更新日期: 2023-09-27 18:03:19

我有一个2GB的xml文件,我正试图实现ReadToFollowing方法,但是,它有点时髦。

当我使用这个时,我不能让我的"if"语句工作。基本上,xmlReader.ReadInnerXML()返回iVehicle下的所有节点。我假设它是文档中每个iVehicle的所有节点(这可能是我想要的,但我还需要获取子节点,以便我可以填充和返回我的对象(对于每个iVehicle)。

        using (FileStream stream = new FileStream(uri, FileMode.Open, FileAccess.Read))
        {
            XmlTextReader xmlReader = new XmlTextReader(stream);
            while (xmlReader.ReadToFollowing("iVehicle"))
            {
                if(xmlReader.NodeType == XmlNodeType.Element && xmlReader.Name.Equals("FamilyName"))
                {
                    fundFamilyId = xmlReader.ReadInnerXml();
                }
                if (xmlReader.NodeType == XmlNodeType.Element && xmlReader.Name.Equals("InvestmentVehicle"))
                {
                    secId = xmlReader.GetAttribute("_Id").ToString();
                }
                if (el.NodeType == XmlNodeType.Element && el.Name == "TradingSymbol")
                {
                    ticker = xmlReader.ReadInnerXml();
                }
                yield return new parsedXML
                {
                    Id = secId,
                    FamilyName = familyName,
                    TickerId = ticker,
                };
            } 
        }

我需要做什么才能使它工作?

ReadToFollowing XML Large File

ReadToFollowing("iVehicle")将读取器定位在下一个<iVehicle>节点的开始位置如果成功,名称是iVehicle

要获得<FamilyName>,您需要读取/移动到它,然后使用。value或一个它的味道来获取内容。

把XmlReader想象成在xml文件中移动一个指针,然后在指针处获得内容。

ReadInnerXml通常用于挑选节点并将其传递给另一个XmlReader,因此您可以拆分代码。