Какая библиотека Java XML Вы рекомендуете (заменить dom4j)? [закрытый]

Свойство score иногда содержит значение с плавающей запятой, но в моем классе c # есть тип данных int , который вызывает исключение. Я не заметил раньше комментария @Ivan Salo . Изменение типа данных int на float исправило мою проблему. Я также использовал List для десериализации JSON, который предлагает @Jon Skeet в разделе комментариев.

public class DetectedLanguage
{
    public string language { get; set; }
    public float score { get; set; }
}
76
задан Community 23 May 2017 в 12:09
поделиться

6 ответов

Sure, XOM :-)

XOM is designed to be easy to learn and easy to use. It works very straight-forwardly, and has a very shallow learning curve. Assuming you're already familiar with XML, you should be able to get up and running with XOM very quickly.

I use XOM for several years now, and I still like it very much. Easy to use, plenty of documentation and articles on the web, API doesn't change between releases. 1.2 was released recently.

XOM is the only XML API that makes no compromises on correctness. XOM only accepts namespace well-formed XML documents, and only allows you to create namespace well-formed XML documents. (In fact, it's a little stricter than that: it actually guarantees that all documents are round-trippable and have well-defined XML infosets.) XOM manages your XML so you don't have to. With XOM, you can focus on the unique value of your application, and trust XOM to get the XML right.

Check out web page http://www.xom.nu/ for FAQ, Cookbook, design rationale, etc. If only everything was designed with so much love :-)

Author also wrote about What's Wrong with XML APIs (and how to fix them). (Basically, reasons why XOM exists in the first place)

Here is also 5-part Artima interview with author about XOM, where they talk about what's wrong with XML APIs, The Good, the Bad, and the DOM, A Design Review of JDOM, Lessons Learned from JDOM and finally Design Principles and XOM.

53
ответ дан 24 November 2019 в 11:22
поделиться

Тот, что встроен в JDK ... с несколькими дополнениями.

Да, это больно: его моделируют после спецификаций W3C, которые были четко разработаны комитетом. Тем не менее, он доступен везде, и если вы остановитесь на нем, вы не столкнетесь с аргументами «мне нравится Dom4J», «мне нравится JDOM», «мне нравится StringBuffer», которые поступают из сторонних библиотек. Тем более что такие аргументы могут превращаться в разные фрагменты кода с использованием разных библиотек ...

Однако, как я уже сказал, я немного улучшил: библиотека Practical XML представляет собой набор служебных классов, которые делают ее проще работать с DOM . Кроме оболочки XPath, здесь нет ничего сложного, просто набор подпрограмм, которые я переписывал для каждой работы.

17
ответ дан 24 November 2019 в 11:22
поделиться

I use XStream, its a simple library to serialize objects to XML and back again.

it can be annotation-driven (like JAXB), but it has very simple and easy to use api and you can even generate JSON.

5
ответ дан 24 November 2019 в 11:22
поделиться

В нашем проекте мы используем http://www.castor.org/ , но только для небольших файлов XML. Его действительно легко освоить, нужен только файл сопоставления XML (или его нет, если теги XML полностью соответствуют атрибутам класса), и готово. Он поддерживает слушателей (например, обратные вызовы) для выполнения дополнительной обработки. Минусы: это не стандарт Java EE, как JAXB.

1
ответ дан 24 November 2019 в 11:22
поделиться

Мне всегда нравился jdom . Он был написан так, чтобы быть более интуитивным, чем парсинг DOM (а парсинг SAX в любом случае всегда кажется неуклюжим).

Из заявления о миссии:

Нет веских причин для Java API для управления XML, чтобы быть сложный, хитрый, неинтуитивный или боль в шее. JDOMTM - это и Ориентирован на Java и оптимизирован для Java. Это ведет себя как Java, использует Java коллекции, это совершенно естественно API для текущих Java-разработчиков и это недорогая точка входа для с использованием XML.

Это в значительной степени мой опыт - довольно интуитивная навигация по деревьям узлов.

6
ответ дан 24 November 2019 в 11:22
поделиться

Я использовал XMLTool для замены Dom4j, и он работает довольно хорошо.

XML Tool использует шаблон Fluent Interface для облегчения манипуляций с XML:

XMLTag tag = XMLDoc.newDocument(false)
   .addDefaultNamespace("http://www.w3.org/2002/06/xhtml2/")
   .addNamespace("wicket", "http://wicket.sourceforge.net/wicket-1.0")
   .addRoot("html")
   .addTag("wicket:border")
   .gotoRoot().addTag("head")
   .addNamespace("other", "http://other-ns.com")
   .gotoRoot().addTag("other:foo");
System.out.println(tag.toString());

Он создан для Java 5, и его легко создать повторяющийся объект поверх выбранные элементы:

for (XMLTag xmlTag : tag.getChilds()) {
   System.out.println(xmlTag.getCurrentTagName());
}
10
ответ дан 24 November 2019 в 11:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: