xml.etree. ElementTree, эквивалентный в Java

Когда Вы видите оператор использования, думаете об этом коде:

StreadReader rdr = null;
try
{
    rdr = File.OpenText("file.txt");
    //do stuff
}
finally
{
    if (rdr != null)
        rdr.Dispose();
}

, Таким образом, реальный ответ - то, что это ничего не делает за исключением, добавленным тело блока использования. Это не обрабатывает его или повторно бросает его.

11
задан Mattias Nilsson 2 November 2009 в 18:22
поделиться

4 ответа

Если честно, все XML API в Java отстой, вы просто можете варьировать уровень отстой, в который вы себя подталкиваете, что может превратиться в ужасный / медленный, управляемый / достойный, а иногда даже на удивление нормальный.

Все это в основном связано с тем фактом, что API Java стараются быть максимально совместимыми с W3C DOM , фактически Xerces ( текущее собственное XML-решение Java ) гордится тем, что соответствует целому ряду спецификаций W3C, связанных с XML, как вы можете видеть на их первой странице.

Фактический API Xerces очень неприятен в работе, и из-за этого многие другие библиотеки XML Java имеют выскочил за эти годы. В настоящее время наиболее популярными из них являются

  • JDOM , они значительно упрощают операции с DOM и, осмелюсь сказать, временами даже приятные, работает как шарм при смешивании с Jaxen - ну, если вы не столкнетесь с этой проблемой с пространствами имен .
  • XOM , в котором есть прекрасное представление о том, что не так с XML Java сейчас и как они предлагают свой способ решения проблем. Частично он лучше, чем JDOM, но пока еще недостаточно широко распространен, поэтому не могу точно сказать, как он ведет себя в реальном мире. Однако определенно стоит проверить.
  • dom4j , хорошо продуманная библиотека, поддерживает все виды важных функций и играет роль практичного решения для XML. dom4j - это, по сути, «старый, проверенный и надежный» вариант из популярных.

И последнее, но не менее важное, я просто должен упомянуть StAX только потому, что он другой, это ' s фактически управляемый событиями потоковый API для XML. Определенно стоит взглянуть только из любопытства.

PS. В настоящее время я пишу свой собственный XML-анализатор / навигатор в качестве упражнения, но еще не решил, какой у него будет API. Я действительно стремлюсь к простоте использования, что пока что довольно редко встречается в Java XML API, но я не совсем уверен, какой API я собираюсь предоставить. ElementTree Python кажется интересным, но, поскольку я не совсем знаком с ним, не могли бы вы вкратце рассказать, что именно вам нравится в нем?

m действительно стремится к простоте использования, что пока что довольно редко встречается в API Java XML, но я не совсем уверен, какой API я собираюсь предоставить. ElementTree Python кажется интересным, но, поскольку я не совсем знаком с ним, не могли бы вы кратко рассказать о том, что именно вам нравится в нем?

m действительно стремится к простоте использования, что пока что довольно редко встречается в API Java XML, но я не совсем уверен, какой API я собираюсь предоставить. ElementTree Python кажется интересным, но, поскольку я не совсем знаком с ним, не могли бы вы вкратце рассказать, что именно вам нравится в нем?

6
ответ дан 3 December 2019 в 10:44
поделиться

Вы могли бы изучить следующие альтернативы:

dom4j

xom

jdom

Поскольку я никогда не использовал ElementTree, я не знаю, какой из них наиболее близок. Если вы можете использовать Groovy внутри своего проекта, он предлагает набор классов, которые очень помогают при обработке XML.

1
ответ дан 3 December 2019 в 10:44
поделиться

Мы обнаружили, что XOM ( http://www.xom.nu ) обеспечивает простую подклассификационную функциональность элемента.

1
ответ дан 3 December 2019 в 10:44
поделиться

Это правда, что Java XML API не самые лучшие с точки зрения удобства использования. Я предпочитаю XOM , JDOM , затем встроенный JAXP именно в таком порядке. Были некоторые разговоры о собственном XML на языке ( Подпрограммы на вкладке «Начало продукта» Интеграция XML в язык программирования Java ) в качестве нового типа данных, но это, похоже, застопорилось.

0
ответ дан 3 December 2019 в 10:44
поделиться
Другие вопросы по тегам:

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