Подтвердить что ты не робот

Простой способ сделать Xml в Java

Есть ли простой способ читать и писать Xml в Java?

Я использовал парсер SAX раньше, но я помню, что это было неинтуитивно, я просмотрел несколько руководств для JAXB, и это выглядит просто сложно.

Я не знаю, был ли я испорчен классом класса С# XmlDocument, но все, что я хочу сделать, это создать XML-документ, представляющий набор классов и их членов (некоторые из них являются атрибутами, некоторые из которых являются элементами).

Я бы посмотрел на сериализацию, но XML должен иметь тот же формат, что и вывод приложения С#, который я перерабатываю в Java.

4b9b3361

Ответ 1

Я рекомендую XOM. Его API ясен и интуитивно понятен.

Ответ 2

Вы должны проверить Xstream. Существует 2-минутный учебник, который действительно простой. Чтобы получить тот же формат, вы бы моделировали классы одинаково.

Ответ 3

Если вы используете jdk 1.4 или newer, посмотрите XMLEncoder класс.

Ответ 4

Некоторые из наиболее популярных подходов к рассмотрению:

Java Archictecture для привязки XML

JAXB - это спецификация стандартного связывания XML. Если у вас уже есть XSD, он может генерировать ваши Java-классы для вас, а затем все, что осталось, - использовать стандартный API для сортировки/разборки.

  • Реализация ссылок из Glassfish
  • Внедрение Apache JaxMe

Другие привязные подходы

Как и в JAXB, эти подходы используют XML-привязные конфигурации. Они могут обеспечить более мелкозернистый контроль процесса без сортировки.

Сверните свой собственный

  • Использование StAX
  • Использование XOM
  • Использование простой XPath

Ответ 5

Dom4j - это простой api для создания XML-документов в java.

Document document = DocumentHelper.createDocument();
Element root = document.addElement( "root" );

Element author2 = root.addElement( "author" )
  .addAttribute( "name", "Toby" )
  .addAttribute( "location", "Germany" )
  .addText( "Tobias Rademacher" );

Ответ 6

Самым простым способом пока является MarkupBuilder в Groovy. Подумайте о Groovy как о новом синтаксисе для Java. XmlSlurper можно использовать для чтения XML.

Ответ 7

Я думаю, что Apache XMLBeans предоставляет функциональные возможности, которые вы используете.

страница Wikipedia дает хороший обзор и использование примера.

Ответ 8

Существует широкий выбор вариантов обработки XML для Java, хотя, судя по документации .NET для XmlDocument, Реализация Java DOM - это самый близкий эквивалент из коробки.

.NET XmlDocument:

Этот класс реализует документ W3C Объектная модель (DOM) Уровень 1 Ядро и Core DOM Level 2.

Java Document:

См. также базовую спецификацию уровня объектной модели документа (DOM).

Пример кода:

public static void main(String[] args) throws Exception {
    File xmlFile = new File(".classpath");

    // read it
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = factory.newDocumentBuilder();
    Document document = builder.parse(xmlFile);

    // walk it
    System.out.println("Node count=" + countNodes(document));

    // write it
    Source source = new DOMSource(document);
    Result result = new StreamResult(System.out);
    TransformerFactory transformerFactory = TransformerFactory
            .newInstance();
    Transformer transformer = transformerFactory.newTransformer();
    transformer.transform(source, result);
}

/** Doesn't count attributes, etc */
private static int countNodes(Node node) {
    int count = 0;

    NodeList kids = node.getChildNodes();
    count += kids.getLength();
    for (int i = 0; i < kids.getLength(); i++) {
        count += countNodes(kids.item(i));
    }

    return count;
}

Ответ 9

Я думаю, что JAXB сложнее, если вы посмотрите на неправильные примеры. В частности, да, способ, основанный на схеме, может стать беспорядочным. Но основанный на кодах, основанный на аннотации, тривиально легко.

Другой простой альтернативой является XStream. И для необязательного случая StaxMate, который является надстройкой для потоковых парсеров Stax.

Ответ 10

Если SAX-анализ является обязательным, JAXP является хорошим выбором. Я предпочитаю DOM-анализ и использовать jdom, который мне намного легче.

Ответ 11

Я бы, конечно, использовал XOM, если вы хотите использовать DOM-подобный подход и SAX (www.sax.org), если вы хотите использовать SAX-подобный подход. Я был вовлечен в раннюю разработку XML и SAX был разработан как ориентированный на события подход, который полезен для некоторых приложений. DOM/XOM и SAX дополняют друг друга - иногда вам нужен один, а иногда и другой. Если вы хотите строить объекты по ходу, а не читать все в памяти, используйте SAX. Если вы счастливы прочитать все, а затем обработать его, используйте XOM.

Я потратил слишком много времени, пытаясь заставить W3C DOM работать - IMO плохо определяется слишком многими способами делать что-то и недостаточно для других. Когда XOM пришел, он произвел революцию в моей производительности.

Сообщество XOM очень хорошо осведомлено и сфокусировано и полезно.