是否有任何java xml库可以按定义的顺序创建具有属性的xml标记? 我必须创建每个标签有5到20个属性的大型xml文件,我希望订购属性以获得更好的可读性。始终创建的属性应该在开头,然后是公共属性,很少使用的属性应该在最后。
答案 0 :(得分:3)
这是一种基于jdom创建自定义输出器的简单方法:
JDOM使用XmlOutputter
将DOM转换为文本输出。使用以下方法打印属性:
protected void printAttributes(Writer out, List attributes, Element parent,
NamespaceStack namespaces) throws IOException
如您所见,属性通过简单列表传递。 (简单)的想法是子类化这个输出并覆盖方法:
@Override
protected void printAttributes(Writer out, List attributes, Element parent,
NamespaceStack namespaces) throws IOException {
Collections.sort(attributes, new ByNameCompartor());
super.printAttributes(out, attribute, parent, namespaces);
}
比较器的实施不应该那么困难。
答案 1 :(得分:1)
我不知道有这样的图书馆。
问题是XML信息模型明确指出标签属性的顺序是无关紧要的。因此,任何保留排序的内存中的XML表示将比必要的更多内存和/或实现次优的属性set / get方法。
我的建议是在XML内容的表示中实现属性的排序;例如在您的XML编辑器中。
我应该指出,我的答案回答了所写的问题 - 关于“保持属性有序”。这可能意味着:
从下面的评论中您确实只想按顺序输出属性。这是一个更简单的问题,可以通过自定义序列化DOM的代码来解决。 Andreas_D解释了如何使用JDOM执行此操作,并且可能还有其他选项。
另一点是,如果工具输入中的属性顺序对其行为产生重大影响,则某些事情会有点破裂。因为XML属性的顺序应该是非重要的 ...