我有一个XML(实际上是一个SVG)文件,4000行,大约700个单独节点,每个节点都有一个重要属性。
我想预加载数据,并用数据填充实际的C#运行时模型图(一些字符串拆分和属性设置)。
我是使用XmlDocument
完成的,此过程花了 12秒(在Unity编辑器播放模式下)。
我开始使用XmlReader
实施,只是在 6秒(没有任何处理,只有Read
,MoveToNextAttribute
来电)的情况下迭代文件。
有没有办法更快地阅读文件错误?
6-8秒的发布时间是我无法接受的。整个过程最多只需要半秒钟。
答案 0 :(得分:2)
我只是从文件中删除了DOCTYPE
定义。
即使使用原始XmlDocument
实施,提升8倍性能。
<!-- <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -->
答案 1 :(得分:1)
或者,您可以使用settings参数绕过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);