Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ReadToFollowing XML大文件_C#_Xml - Fatal编程技术网

C# ReadToFollowing XML大文件

C# ReadToFollowing XML大文件,c#,xml,C#,Xml,我有一个2GB的xml文件,我正在尝试实现ReadToFollow方法,但是它有点古怪 当我使用这个时,我无法让我的“如果”语句工作。基本上,xmlReader.ReadInnerXML()将返回IVehile下的所有节点。我假设它是文档中每个iVehicle的所有节点(这可能是我想要的,但我还需要获取子节点,以便填充和返回我的对象(每个iVehicle) 我需要做什么才能使此工作正常?ReadToFollowing(“iVehicle”)将读卡器放置在下一个节点的开头 因此,它的名字是iVeh

我有一个2GB的xml文件,我正在尝试实现ReadToFollow方法,但是它有点古怪

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

我需要做什么才能使此工作正常?

ReadToFollowing(“iVehicle”)
将读卡器放置在下一个
节点的开头 因此,它的名字是iVehicle

要访问
,您需要阅读/移动到它,然后使用.Value或它的一种味道来获取内容

将XmlReader视为在xml文件中移动指针,然后在指针处获取内容

ReadInnerXml通常用于提取一个节点并将其传递给另一个XmlReader,这样您就可以分解代码

        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,
                };

            } 
        }