快速 XML (SVG) 阅读?

Fast XML (SVG) Read?

我有一个 XML(实际上是一个 SVG)文件,4000 行,大约 700 个单独的节点,每个节点都有一个重要属性。

我想预加载数据,并用数据填充实际的 C# 运行时模型图(一些字符串拆分和 属性 设置)。

我用 XmlDocument 做到了,这个过程花了 12 秒(在 Unity 编辑器播放模式下)。

我开始使用 XmlReader 实现,只是遍历文件花了 6 秒(没有任何处理,只有 ReadMoveToNextAttribute 来电)。

有什么方法可以读取文件吗…………更快?

6-8秒的启动时间是我无法接受的。整个过程大约需要... ...最多半秒。

我只是从文件本身删除了 DOCTYPE 定义。

即使使用原始 XmlDocument 实现,它 也能将性能提升 8 倍

<!-- <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -->

或者,您可以使用设置参数绕过 DTD 验证:

// Files with a <!DOCTYPE ...> get parsed with a super expensive validation; ignore it.
XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.None;
settings.XmlResolver = null;
settings.DtdProcessing = DtdProcessing.Ignore;

XmlReader reader = XmlReader.Create(filePath, settings);
XmlDocument doc = new XmlDocument();
doc.Load(reader);