我正在编写一个Java程序,该程序读取xml文件,进行一些修改并写回xml。
使用标准的Java xml DOM api,不会保留属性的顺序。也就是说,如果我有一个输入文件,例如:
<person first_name="john" last_name="lederrey"/>
我可能会得到一个输出文件:
<person last_name="lederrey" first_name="john"/>
是正确的,因为XML规范说order属性并不重要。
但是,我的程序需要保留属性的顺序,以便一个人可以使用diff工具轻松比较输入和输出文档。
一种解决方案是使用SAX(而不是DOM)处理文档:
DOM处理后XML属性的顺序
但是,这不适用于我的情况,因为我需要在一个节点中进行的转换可能取决于整个文档的XPATH表达式。因此,最简单的方法是拥有一个与标准Java
DOM库非常相似的xml库,不同之处在于它保留了属性的顺序。
有没有这样的图书馆?
ps:请避免讨论我是否应该保留属性顺序。这是一个非常有趣的讨论,但这不是这个问题的重点。
您可能还想尝试DecentXML,因为它可以保留属性顺序,注释甚至标识。如果您需要以编程方式更新也应该可以人工编辑的XML文件,则非常好。我们将其用于我们的一种配置工具。
问题内容: 在以最小方式处理XML时,有什么方法可以保留属性的原始顺序吗? 说我有: 当我用最小修改它时,属性按字母顺序重新排列为蓝色,绿色和红色。我想保留原始顺序。 我通过遍历返回的元素来处理文件,然后进行这样的分配。 问题答案: 在以最小方式处理XML时,有什么方法可以保留属性的原始顺序吗? 如果为“ no”,则用于存储属性的数据类型是无序字典。pxdom可以做到,尽管它的速度要慢得多。
问题内容: 我使用ElementTree在python中编写了一个相当简单的过滤器,以调整某些xml文件的上下文。它或多或少地起作用。 但是它重新排序了各种标签的属性,我希望它不要这样做。 有谁知道我可以抛出的开关使其保持在指定的顺序? 上下文 我正在使用一个粒子物理工具,该工具具有基于xml文件的复杂但奇怪的配置系统。以这种方式设置的许多事物中包括各种静态数据文件的路径。这些路径被硬编码到现有的
问题内容: Java Set是否保留顺序?有一种方法将Set返回给我,并且假定数据是有序的,但是遍历Set时,数据是无序的。有没有更好的方法来解决这个问题?是否需要更改方法以返回Set以外的内容? 问题答案: 该Set接口不提供任何订购保证。 它的子接口代表根据某种标准排序的集合。在Java 6中,有两个实现的标准容器。他们是和。 除了SortedSet接口之外,还有类。它记住元素插入到集合中的顺
包含由管道分隔的数字列表的文件可以有重复项。需要编写map reduce程序,在原始输入顺序中列出不重复的数字。我可以删除重复项,但不保留输入顺序。
Java集是否保持顺序?一个方法返回一个集合给我,假设数据是有序的,但是在集合上迭代,数据是无序的。有更好的方法来管理这个吗?这个方法需要改变来返回集合以外的东西吗?
问题内容: 我有一个标准POJO,其中包含一组属性。POJO已被注释为,以便作为文档保留在MongoDB中。 我如何(注释?)可以忽略/避免POJO中的属性之一被保留? 问题答案: 该注释是。参见http://static.springsource.org/spring- data/data-document/docs/current/reference/html/#mapping-usage-