在C#中,当从文件或字符串加载文档时,是否有办法在原始XML“文本”中计算出XmlNode的位置?我希望能够报告我正在处理的XML文档的问题。
e.g:
“foo.xml中的错误 - 属性'pet'的值必须是一种蓬松的哺乳动物,在第27行第13列[此处原始XML文本的片段...]”
修改 使用模式验证无法完成检查。这是另一个不那么轻浮的示例错误消息来说明:“指定的插件类型'Addins.LogWindow'必须是公共的”
答案 0 :(得分:2)
嗯,你不应该编写自己的XmlParser,但是在Compact Framework中我们别无选择,因为XmlDocument与氯胺酮上的Dalai Lama一样慢,所以我们在解析Xml文件时使用XmlReader。
每当我们发现混乱或不一致的事情时我们抛出一个异常,我们将XmlReader传递给异常。然后,我们可以通过将XmlReader转换为包含行和位置属性的IXmlLineInfo对象来提取行位置。
不知道这是否有帮助。一般来说,我不会在桌面上编写自己的XmlParser,这就是为什么我不愿建议将其作为解决方案。
答案 1 :(得分:1)
XML Schema是否适合您?
答案 2 :(得分:1)
很抱歉,很少有DOM实现能够记住节点的原始解析位置。大多数只报告解析错误的任何位置信息。例如,在DOM Level 3 LS中,只有DOMLocator时才会引用DOMError。
我所知道的唯一一个在解析之后跟踪的是pxdom,这对于Python来说并没有多大用处。