您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python-lxml:强制执行属性的特定顺序

python-lxml:强制执行属性的特定顺序

正如评论者所提到的,属性顺序在XML中没有语义上的意义,也就是说,它不会改变元素的含义:

<tag attr1="val1" attr2="val2"/>

<!-- means the same thing as: -->

<tag attr2="val2" attr1="val1"/>

sql一个类似的特征,即列顺序不会改变表定义的含义。XML属性sql列是一个 集合 (不是有 序列的集合 ),因此,关于这些属性之一,可以“正式”说的就是属性或列是否存在于集合中。

就是说,这肯定会影响人类的可读性,因为在这样的结构被编写并以文本形式出现(例如源代码)并且必须进行解释的情况下,这些事物的出现顺序和顺序对我来说很有意义。 。

任何将属性顺序视为重要的XML解析器都将不符合XML标准。这并不意味着它不可能发生,但是根据我的经验,这当然是不寻常的。但是,根据您提到的工具的来源,这可能值得测试。

据我所知,lxml没有指定顺序属性出现在序列化XML中的机制,如果确实如此,我会感到惊讶。

为了测试行为,我强烈倾向于编写一个基于文本的模板以生成足够的XML来对其进行测试:

id = 1
name = 'Development Signature'
puid = 'dev/1'
version = '1.0'
mimetype = 'text/x-test-signature'

template = ('<FileFormat ID="%d" Name="%s" PUID="%s" Version="%s" '
            'MIMEType="%s">')

xml = template % (id, name, puid, version, mimetype)
python 2022/1/1 18:32:08 有205人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶