0

我有一个 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,
                };

            } 
        }

我需要做什么才能完成这项工作?

4

1 回答 1

1

ReadToFollowing("iVehicle")将阅读器定位在下一个<iVehicle>节点的开头所以假设它成功 Name is iVehicle

要到达<FamilyName>您需要阅读/移动到它,然后使用 .Value 或它的味道来获取内容。

将 XmlReader 想象为在 xml 文件中移动一个指针,然后您可以在指针处获取内容。

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

于 2013-03-11T23:15:40.057 回答