是否有任何java xml庫可以按照定義的順序創建帶有屬性的xml標記? 我必須創建每個標籤具有5到20個屬性的大型xml文件,並且我希望爲了更好的可讀性而訂購屬性。始終創建的屬性應該在開頭,後面跟着通用屬性,很少使用的屬性應該在末尾。保持屬性順序的Java XML庫?
回答
我不知道任何這樣的庫。
問題是XML信息模型明確指出標籤屬性的順序是不相關的。因此,任何保留排序努力的內存中的XML表示都會比所需的更多的內存和/或次優地實現屬性set/get方法。
我的建議是在您的XML內容的演示文稿中實現屬性的排序;例如在您的XML編輯器中。
我要指出,我的答案回答書面問題的 - 關於「保持屬性,以便」。這可能意味着:
- 保持插入的順序,或
- 保持在屬性根據一些排序規則進行排序;例如升序。
從下你的評論真的只想輸出在有序的屬性。這是一個更簡單的問題,可以通過自定義序列化DOM的代碼來解決。 Andreas_D解釋瞭如何使用JDOM來完成此操作,並且可能還有其他選項。
另一個問題是,如果某個工具的輸入中的屬性順序對其行爲方式產生重大影響,則某些內容可能會被破壞。由於XML的訂單屬性是應該是無顯著 ...
我還沒有意識到,但這樣的排序可能是一個XML輸出的選項 - 他們知道如何縮進(漂亮的打印),爲什麼不提供按名稱排序屬性? –
我們使用java爲c#wpf設計器生成xaml文件。這位設計師是我們的XML編輯器,如果屬性是按順序的話,它會很好。我們不能在那裏實現自己的排序,如果可能的話,我們希望避免在生成過程中添加另一個解析/排序步驟。 – Markus
下面是創建基於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);
}
比較的實現不應該是困難的。
peshkira指出你可以爲元素添加一個排序的屬性列表。 element.setAttributes(List)。 更簡單,像魅力一樣工作。 – Markus
不能保證添加排序列表適用於每個DOM實現。該元素可以將屬性存儲在散列映射中,並「刪除」列表順序。 –
- 1. 保留屬性順序的java xml庫
- 2. groovy - xml - 保留屬性順序
- 3. xml屬性的順序
- 4. Java編輯xml文件(保存屬性順序)
- 5. Nodejs屬性保證順序
- 6. 排序XML屬性按字母順序
- 7. net xmlserializer:保留屬性順序
- 8. 屬性的XML切換順序
- 9. Exception.Data屬性的IDictionary始終保持順序?
- 10. DataWeave是否保持JSON屬性的順序?
- 11. Java中輸出文件中XML屬性的控制順序
- 12. 將Java屬性文件按特定順序保存爲XML格式
- 13. 在XML中,屬性順序重要嗎?
- 14. xsd.exe屬性順序
- 15. 確實GetPropertyNames()保留屬性順序
- 16. 按順序保存自定義屬性
- 17. Java XML屬性
- 18. Xcode:保持plist的順序
- 19. iPhone:NSSet保持排序順序
- 20. 在XSD中設置XML屬性的順序(XML Schema)
- 21. JTabbedPane - 保持標籤順序
- 22. 休眠不保持堅持順序
- 23. JAVA DOM xml屬性
- 24. XML屬性在Java
- 25. java xml document.getTextContent()保持爲空
- 26. Android Retrofit 2簡單的XML不保持順序
- 27. ActiveRecord.where(column:array_of_strings) - 如何保持順序?
- 28. 如何保持IntentService的屬性持久?
- 29. 按順序獲取Grails域持久性屬性
- 30. 如何保持Java屬性文件的可讀性
您目前如何生成XML? –
爲什麼不先排序屬性列表然後添加它們。 我不知道你的模型是什麼樣子,但如果屬性名稱在列表中,它應該像調用Collections.sort(list)一樣簡單,然後你可以使用任何XML lib來添加屬性......或者我錯過了什麼? – peshkira
@peshkira他不想對它們進行排序,他希望以某種預定的,可能未排序的順序在XML中查看它們。 –