我正在编写一些 C# 来表示节点、边和图形。作为该代码库的一部分,我有一些类可以向/从 xml 写入/读取图形。我在 Visual Studio 中有一个测试,它创建一个图形,将其写入 xml,然后从 xml 重建图形。这似乎工作正常。接下来,我想可视化 Unity 中的图表。我使用 .net 3.5 将我的图形代码编译成 .dll 并将其导入 Unity。Unity 识别 .dll,并且在尝试运行它时不会抛出任何错误。但是,当我尝试加载与以前相同的 xml 文件时,xml 解析器会中断并且无法加载图形。
有谁知道可能是什么原因造成的?回到 Visual Studio,我尝试将 .net 库换成单声道库,我猜测这可能是个问题,但它仍然可以正常工作。Visual Studio 工作得很好,但 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#349A@.%PXG8V§," />
</newNodes>
<newEdges>
<edge type="Knows" id="Ç~-EY'@26@▒~Ø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#349A@.%PXG8V§," />
</newEdges>
<oldNodes />
<oldEdges />
</time>
</graph>
在 Unity 中,解析器无法读取 newNodes 下的所有节点 这段代码应该可以将它们全部读取。在 Visual Studio 中,它运行良好,并且第一次解析了所有三个 newNodes 元素。在 Unity 中,只有第一个是。
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
我被这个问题弄得筋疲力尽。任何见解将不胜感激。谢谢!