gpt4 book ai didi

javascript - 如何防止 XMLSerializer.serializeToString() 重新排序属性?

转载 作者:数据小太阳 更新时间:2023-10-29 02:13:22 25 4
gpt4 key购买 nike

我正在使用 jQuery 将任意 XML 字符串(较大文档的片段)加载到浏览器 DOM 中并对其进行操作,然后使用 XMLSerializer 将它们加载回字符串并将它们发送回服务器,在那里它们被处理(通过 python 和 lxml) 并重新集成到完整的 XML 文档中。

XML 在 git 存储库中开始和结束。我发现 XMLSerializer 处理的元素的属性顺序颠倒了,导致我的存储库中出现虚假更改,如下所示:

- <literal><token kind="w" id="en-us-esv-xeaugcbzgo">sent</token><token kind="s" id="en-us-esv-xeaugcbzgw"> </token></literal>
+ <literal><token id="en-us-esv-xeaugcbzgo" kind="w">sent</token><token id="en-us-esv-xeaugcbzgw" kind="s"> </token></literal>

这不是我使用的任何工具的错误。当然,xml 元素上的属性顺序应该无关紧要但是,因为 git 是一个面向行的 SCM,这些虚假的和微不足道的变化会分散我想要跟踪的实际实质性变化的注意力。

问题:有没有办法让序列化程序不对我的属性重新排序?或者,是否存在任何工具来指定/约束属性的顺序?

为清楚起见在上面进行了编辑:我知道,根据 XML 规范,“开始标记或空元素标记中属性规范的顺序并不重要”:http://www.w3.org/TR/REC-xml/#sec-starttags .可以这么说,属性的顺序对我来说很重要。:)

最佳答案

如果这很重要,错误不在于重新排序属性,而是它很重要。让它随心所欲地排序,并修复错误。

编辑:

等一下。为什么要将其放入存储库?如果它是输出而不是源,那么它在存储库中的值是作为未编辑的资源而不是源,并且存储它是为了方便。否则,您为什么要让计算机进程更改它?

这类似于将二进制文件放入存储库,原因与导致错误的原因相同,也与产生异常的原因相同。

关于javascript - 如何防止 XMLSerializer.serializeToString() 重新排序属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3551923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com