Моя программа (в Unity и C#) принимает в файле Mathml уравнение, которое выглядит следующим образом:
<mrow>
<apply>
<eq/>
<apply>
<plus/>
<apply>
<power/>
<ci>5</ci>
<cn>2</cn>
</apply>
<apply>
<times/>
<cn>4</cn>
<ci>2</ci>
</apply>
<cn>4</cn>
</apply>
<cn>0</cn>
</apply>
</mrow>
Затем она анализирует содержимое этого файла и использует переключатель регистр для возврата указанных c значений. Мой файл чтения не читает в файле правильно, и я знаю, что я читаю его, потому что он выводит "UnityEngine.Debug: Log (Object)", но ничего из файла. Я думал, что это может быть чтение пустых мест и не игнорирование их, но я думал, что регистр переключателя будет только читать строку для тега, а затем возвращать указанную c строку. Я не уверен, почему я не могу вывести правильное содержимое, которое я хочу, например, операторы. Этот код ниже:
using UnityEngine;
using librarytags;
using System.Collections.Generic;
public class ParseML : Librarymathml
{
Stack<string> applies = new Stack<string>();
public void Start()
{
//var textFile = Resources.Load<TextAsset>("MathMLBase/testing");
OpenFileReader();
//ToOutput();
}
public void OpenFileReader()
{
int counter = 0;
string line;
System.IO.StreamReader file =
new System.IO.StreamReader(@"c:\Users\MckyW\Documents\attempting\Assets\Resources\Algorithm.xml"); // Path to the algorithm
while ((line = file.ReadLine()) != null) // Read all the lines of the file
{ // On every line, scan for a tag and use the tag library to store tags in a stack
string tempLine = MLTAGS(line); // Only scans and stores tags
applies.Push(tempLine);
Debug.Log(tempLine);
counter++;
}
file.Close();
}
public void ToOutput()
{
foreach(string str in applies)
{
string stack = applies.Pop();
Debug.Log(stack);
}
}
}
Переключатель:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace librarytags
{
public class Librarymathml : MonoBehaviour
{
public static string MLTAGS(string tag)
{
switch (tag)
{
case "<math>":
//
return "";
case "</math>":
//
return "";
case "<mrow>":
//
return "";
case "</mrow>":
//
return "";
case "<apply>":
//
return "";
case "</apply>":
//
return "";
case "<eq/>":
return "=";
case "<plus/>":
return "+";
case "<ci>":
return "";
case "</ci>":
return "";
case "<cn>":
return "";
case "</cn>":
return "";
case "<times/>":
return "*";
case "<power>":
return "^";
case "</power>":
return "";
/* case number:
return numatthatline*/
case "":
return "";
}
return "";
}
}
}