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

Я попробовал два решения с высоким рейтингом, но нашел некоторые проблемы, хотя оба они работают в некоторой степени.

  • Элемент списка: новый метод перетаскивания пакетов оставляет неизменным и создает некоторые нежелательные эффекты
  • Элемент списка: Пакет переименования изменяет только последнюю часть имени пакета

После некоторых экспериментов я нашел, что следующий метод хорошо работает для меня.

Если вам просто нужно изменить последнюю часть имени пакета, используйте метод, описанный GreyBeardedGeek , а именно

Щелкните правой кнопкой мыши пакет на панели «Проект». Выберите «Рефакторинг» -> «Переименовать» из контекстного меню

. Если вам нужно изменить полное имя пакета, сделайте следующее.

Щелкните правой кнопкой мыши на пакете на панели «Проект». Выберите «Рефактор» -> «Переместить» из контекстного меню

. Это создаст новую папку пакета (если необходимо), но сохранит последнюю часть имени вашего пакета, как и раньше. Если вам нужно изменить последнюю часть, выполните переименование соответственно.

Обратите также внимание, что вам может потребоваться изменить имена пакетов, например. build.gradle, manifest и / или любые файлы ресурсов xml или даже в вашем коде, если они жестко закодированы. После этого при необходимости выполните проект Sync / Clean / Rebuild.

28
задан Omar Kooheji 9 February 2009 в 15:40
поделиться

11 ответов

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

15
ответ дан grayger 14 October 2019 в 11:31
поделиться

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

8
ответ дан Milhous 14 October 2019 в 11:31
поделиться

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" );
3
ответ дан Kyle Dyer 14 October 2019 в 11:31
поделиться

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

Java Archictecture для XML Привязка

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

Другие обязательные подходы

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

3
ответ дан toolkit 14 October 2019 в 11:31
поделиться

Если Вы используете jdk 1.4, или более новый смотрят на класс XMLEncoder .

3
ответ дан Marko 14 October 2019 в 11:31
поделиться

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

2
ответ дан Aaron Digulla 14 October 2019 в 11:31
поделиться

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

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

2
ответ дан stephendl 14 October 2019 в 11:31
поделиться

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

.NET XmlDocument:

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

DOM:

См. также Спецификацию Ядра Уровня 3 Объектной модели документа (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;
}
2
ответ дан McDowell 14 October 2019 в 11:31
поделиться

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

0
ответ дан Kai Huppmann 14 October 2019 в 11:31
поделиться

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

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

1
ответ дан StaxMan 28 November 2019 в 03:34
поделиться

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

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

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

0
ответ дан 28 November 2019 в 03:34
поделиться
Другие вопросы по тегам:

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