Python XML语法检查-在元素的文本中强制执行NO'>'

时间:2018-09-04 16:38:28

标签: python xml parsing syntax

我在这里有一个问题。我一直在使用Python的Etree解析XML并对其进行语法检查。我遇到的问题是,当它无法解析XML时,它将引发一个错误,但是指出错误实际上是在哪里最初产生的,这不是一件好事。我意识到我的需求是能够执行一个规则,该规则说XML元素的文本中不能有“>”(对于我的XML而言,这是正确且合理的)。解析XML时,有没有办法告诉Etree做到这一点?我知道这里有libxml,但是如果我要使用Python 2.75默认情况下没有的库,那么我将需要源代码,因为不允许在我的工作位置安装其他Python库。因此,这是一个关于在XML元素的文本中不强制执行'>'的问题的答案,以及有关如何发现XML文档中首先出现错误的行的一些建议;例如忘记了XML结束标记中的开头“ <”。任何帮助将非常感激!谢谢。

1 个答案:

答案 0 :(得分:1)

我不确定您的标题问题。为什么要强制执行一个规则,使“>”不出现在文本中,因为XML中没有这样的规则?

如果您对从XML解析器获得的诊断不满意,那么唯一的选择就是尝试使用其他解析器(尽管请检查您是否正在提取所有可用的信息-我不知道Python的ETree,但某些解析器将诊断信息隐藏在晦涩的地方。

但是有一些限制。如果缺少开始标记,则没有解析器能够告诉您它应该在哪里。它只能告诉您不匹配的结束标签在哪里。因此,要求它告诉您“错误的最初出处”是太多的问题。