Я пишу несколько C# для представления узлов, ребер и графиков. Как часть этой библиотеки кода, у меня есть несколько классов для записи/чтения графиков в/из xml. У меня есть тест в Visual Studio, который создает граф, записывает его в xml и затем восстанавливает график обратно из xml. Кажется, это работает нормально. Далее я хотел визуализировать графики внутри Unity. Я скомпилировал свой код графа в .dll с .net 3.5 и импортировал его в Unity. Unity распознает .dll и не вызывает ошибок, пытающихся запустить его. Однако, когда я пытаюсь загрузить тот же файл xml, как и раньше, анализатор xml разбивается и не может загрузить график.Внешняя DLL, запущенная в Unity, ведет себя по-другому, а затем при запуске в Visual Studio
Кто-нибудь знает, что может быть причиной этого? Вернувшись в Visual Studio, я попытался заменить библиотеки .net на моно библиотеки, угадав, что это может быть проблемой, но все равно работала нормально. Визуальная студия отлично работает, но Unity поднимается.
XML-файл, который я пытаюсь разобрать, как выглядит ...
<?xml version="1.0" encoding="utf-8"?>
<graph>
<time time="0">
<newNodes>
<node type="Person" id="£*6O▒$5M¥▒(6»S}_-03+" />
<node type="Person" id="JÇ$T!-%=▒¾4IW┼RR¿¿G%" />
<node type="Person" id="X2¿+2B#¥V,ß«88!9-D;)" />
</newNodes>
<newEdges>
<edge type="Knows" id="_«C~F/¾0¾€`J]¾F%†9╟▒" from="£*6O▒$5M¥▒(6»S}_-03+" to="JÇ$T!-%=▒¾4IW┼RR¿¿G%" />
<edge type="Knows" id="Ð}Ø4┴~Ð;┴/$£YHߣH,P(" from="JÇ$T!-%=▒¾4IW┼RR¿¿G%" to="£*6O▒$5M¥▒(6»S}_-03+" />
<edge type="Knows" id="J;R`߆`VH9*,J†1(5XÇ/" from="£*6O▒$5M¥▒(6»S}_-03+" to="X2¿+2B#¥V,ß«88!9-D;)" />
<edge type="Knows" id="¾,┴N!S'@\N{?┴3£D;@‡$" from="X2¿+2B#¥V,ß«88!9-D;)" to="£*6O▒$5M¥▒(6»S}_-03+" />
<edge type="Knows" id="*6)Ð7$Z¿†*RXCY½3I]X!" from="JÇ$T!-%=▒¾4IW┼RR¿¿G%" to="X2¿+2B#¥V,ß«88!9-D;)" />
<edge type="Knows" id="┼¼~CØ0;N5C[X+OV«Ø!7]" from="X2¿+2B#¥V,ß«88!9-D;)" to="JÇ$T!-%=▒¾4IW┼RR¿¿G%" />
</newEdges>
<oldNodes />
<oldEdges />
</time>
<time time="1">
<newNodes>
<node type="Person" id="+E%_WØ¿V_J7N-|]75«W!" />
</newNodes>
<newEdges>
<edge type="Knows" id="Ç┼/»U.¾9+YQ8}╟C=#CV*" from="£*6O▒$5M¥▒(6»S}_-03+" to="+E%_WØ¿V_J7N-|]75«W!" />
<edge type="Knows" id="€'T[┼‡/¿~8=Ç`Ç3]$R\*" from="+E%_WØ¿V_J7N-|]75«W!" to="£*6O▒$5M¥▒(6»S}_-03+" />
</newEdges>
<oldNodes />
<oldEdges />
</time>
<time time="2">
<newNodes>
<node type="Person" id="]?:ER#[email protected]%PXG8V§," />
</newNodes>
<newEdges>
<edge type="Knows" id="Ç~-EY'@[email protected]▒~ØU^I½1_/" from="JÇ$T!-%=▒¾4IW┼RR¿¿G%" to="+E%_WØ¿V_J7N-|]75«W!" />
</newEdges>
<oldNodes />
<oldEdges />
</time>
<time time="3">
<newNodes />
<newEdges>
<edge type="Knows" id="§/«;~'2H,}KÐ8»•ÐVMÐ{" from="+E%_WØ¿V_J7N-|]75«W!" to="]?:ER#[email protected]%PXG8V§," />
</newEdges>
<oldNodes />
<oldEdges />
</time>
</graph>
В Unity, синтаксический анализатор не в состоянии прочитать все узлы под newNodes Этот маленький патрон код должен прочитать все они внутри. В Visual Studio он отлично работает, и все три newNodes в первом элементе анализируются. В единстве только первый.
reader.ReadToFollowing(XmlConstants.NEW_NODES);
if (reader.ReadToDescendant(XmlConstants.NODE))
{
do
{
Node node = XmlHelper.readNode(reader, nodeTypes);
g.add(node, time);
Slog.WriteLn("Loaded node " + node.Sguid);
} while (reader.ReadToNextSibling(XmlConstants.NODE));
}
Код внутри функции XmlHelper.readNode просто делает звонки на reader.MoveToAttribute() и reader.Value
Я довольно измотанным этой проблемой. Любое понимание было бы весьма благодарным. Благодаря!
1) Как открыть файл для чтения? 2) Как вы пишете эти атрибуты id? – dbc
Я открываю файл только с помощью XmlReader. XmlReader reader = новый XmlReader ("test.xml"); , и я не уверен, почему, как я написал atts, имеет значение, но я также использовал XmlWriter. writer.writeAttributeString ("id", "blah blah, id"); – cdhanna
Я думал, что это может быть проблема с кодировкой (эти строки 'id' выглядят довольно не-ASCII), но я вижу, что вы [нашли проблему] (http://stackoverflow.com/questions/30629175/external-dll-running- in-unity-behays-differently-then-when-run-in-visual-studio/30629594 # 30629594), так как я написал свой комментарий. – dbc