Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.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# 尝试将xml导入android时发生OutOfMemoryException_C#_Android_Xml_Xamarin - Fatal编程技术网

C# 尝试将xml导入android时发生OutOfMemoryException

C# 尝试将xml导入android时发生OutOfMemoryException,c#,android,xml,xamarin,C#,Android,Xml,Xamarin,当我尝试使用我们制作的应用程序将xml文件导入android时,我的xml文件大小为230 mb,长度为2.3亿,但在尝试将readtoendstring导入变量时,我收到一个错误: System.outofmemoryexception:System.text.stringbuilder.tostring()处(包装器管理为本机)System.string.fastallocatestring(int)处内存不足 以下是代码 var documentsPath = Android.OS.Env

当我尝试使用我们制作的应用程序将xml文件导入android时,我的xml文件大小为230 mb,长度为2.3亿,但在尝试将
readtoend
string导入变量时,我收到一个错误:

System.outofmemoryexception:System.text.stringbuilder.tostring()处(包装器管理为本机)System.string.fastallocatestring(int)处内存不足

以下是代码

var documentsPath = Android.OS.Environment.ExternalStorageDirectory.ToString();
            var dirName = System.IO.Path.Combine(documentsPath.ToString(), "Stock");

            var filePath = System.IO.Path.Combine(dirName, "Data.xml");
            TextReader tr = new StreamReader(filePath);
            string result = tr.ReadToEnd();
            tr.Close();

            var st = new XStreamingElement(filePath);

            return result;

任何人都可以提供帮助,请提前感谢。

尝试使用XMLTextReader类,如下所示:

XmlTextReader myTextReader = new XmlTextReader(filename);
myTextReader.WhitespaceHandling = WhitespaceHandling.None;
while (myTextReader.Read())
{
    if (myTextReader.NodeType == XmlNodeType.Element &&
        myTextReader.LocalName == "Reward" &&
        myTextReader.IsStartElement() == true)
        {
            ProcessRewardNode(myTextReader);
                myTextReader.Skip();
    }
}
以下是ProcessRewardNode的方法实现:

private void ProcessRewardNode(XmlTextReader RewardReader)
{
    XmlDocument RewardXmlDoc = new XmlDocument();
    RewardXmlDoc.LoadXml(RewardReader.ReadOuterXml());
    // we can use xpath as below
    myID = RewardXmlDoc.SelectSingleNode("Reward/myID").InnerText;
}
有关更多信息,请访问

的可能副本,查看和。