Хорошая утилита Java XML DOM - PullRequest
       0

Хорошая утилита Java XML DOM

4 голосов
/ 09 августа 2011

Я снова и снова пишу один и тот же подробный код манипулирования DOM:

Element e1 = document.createElement("some-name");
e1.setAttribute("attr1", "val1");
e2.setAttribute("attr2", "val2");
document.appendChild(e1);

Element e2 = document.createElement("some-other-name");
e.appendChild(e2);

// Etc, the same for attributes and finding the nodes again:
Element e3 = (Element) document.getElementsByTagName("some-other-name").item(0);

Теперь я не хочу все вместе переключать архитектуру, т.е. я не хочу использовать JDOM, JAXBили что-нибудь еще.Просто Java org.w3c.dom.Причины этого

  1. Это старая и большая устаревшая система
  2. XML используется во многих местах, и XSLT несколько раз трансформировался для получения XML, HTML, PDF вывода
  3. Я просто ищу удобство, а не большие изменения.

Мне просто интересно, есть ли хорошая библиотека-обертка (например, с Apache Commons или Google), которая позволяет мнеделайте такие вещи с беглым стилем, похожим на jRTF :

// create a wrapper around my DOM document and manipulate it:
// like in jRTF, this code would make use of static imports
dom(document).add(
  element("some-name")
    .attr("attr1", "val1")
    .attr("attr2", "val2")
    .add(element("some-other-name")),
  element("more-elements")
);

, а затем

Element e3 = dom(document).findOne("some-other-name");

Важное требование, которое у меня есть, заключается в том, что я явно хочуоперировать org.w3c.dom.Document, который

  1. уже существует
  2. довольно большой
  3. нуждается в небольшом количестве манипуляций

Таким образом, преобразованиеorg.w3c.dom.Document в JDOM, dom4j и т. д. кажется плохой идеей.Я бы предпочел оборачивать его адаптерами.

Если его не существует, я мог бы свернуть свой, так как этот синтаксис jRTF выглядит действительно хорошо!А для XML это кажется довольно простым для реализации, так как существует всего несколько типов узлов.Это может стать таким же мощным, как jquery, с точки зрения API!

Ответы [ 3 ]

4 голосов
/ 10 августа 2011

В моем вопросе я нашел несколько инструментов, которые примерно выполняют то, что я просил:

Однако, в то же время, я более склонен кататься самостоятельно. Я действительно большой поклонник jquery, и я думаю, что jquery может быть отображен на свободный API Java:

http://www.jooq.org/products/jOOX

4 голосов
/ 09 августа 2011

Чтобы проработать мой комментарий, Dom4J приблизит вас к тому, что вы хотели:

final Document dom = DocumentHelper.createDocument().addElement("some-name")
        .addAttribute("attr1", "val1")
        .addAttribute("attr2", "val2")
        .addElement("some-other-name").getDocument();
System.out.println(dom.asXML());

Вывод:

<?xml version="1.0" encoding="UTF-8"?>
<some-name attr1="val1" attr2="val2"><some-other-name/></some-name>

Я знаю, что это не нативный DOM, но он очень похож ион имеет очень хорошие возможности для разработчиков Java (итераторы элементов, списки элементов и т. д.)

1 голос
/ 09 августа 2011

Ну, это может быть глупо, но почему бы вам не реализовать этот маленький API самостоятельно?Я уверен, что вы достаточно хорошо знаете API DOM, и вам не понадобится много времени, чтобы реализовать то, что вы хотите.

Кстати, рассмотрите возможность использования XPath для манипулирования документом (вы также можете реализовать мини-API поверх этого).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...