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

Нужно ли использовать библиотеки для управления XML?

Я использую Java back end для создания строки XML, которая передается в браузер. В настоящее время я использую простые манипуляции с строками для создания этого XML. Важно ли, чтобы я использовал некоторую библиотеку XML в Java для создания строки XML? Я считаю, что библиотеки очень сложны в использовании по сравнению с тем, что мне нужно.

4b9b3361

Ответ 1

Это не важно, но желательно. Однако, если манипуляция строк работает для вас, тогда идите! Существует множество случаев, когда небольшой или простой XML-текст можно безопасно создать вручную.

Просто имейте в виду, что создание XML-текста сложнее, чем кажется. Вот некоторые критерии, которые я бы рассмотрел:

  • Во-первых: сколько у вас контроля над информацией, поступающей в xml?

Чем меньше у вас ресурсов на исходных данных, тем больше вероятность, что у вас возникнут проблемы, и тем более выгодной станет библиотека. Например: (a) Можете ли вы гарантировать, что имена элементов никогда не будут иметь символ, который является незаконным в имени? (b) Как насчет кавычек в содержимом атрибута? Могут ли они произойти, и вы справляетесь с ними? (c) Имеются ли в данных когда-либо все, что может потребоваться закодировать как entity (например, меньше, чем часто требуется выводится как < lt;); вы делаете это правильно?

  • Во-вторых, ремонтопригодность: это код, который создает XML, который легко понять кому-то еще?

Вероятно, вы не хотите зацикливаться на коде на всю жизнь. Я работал со вторым С++-кодом, который вручную создает XML, и это может быть удивительно неясным. Конечно, если это ваш личный проект, вам не нужно беспокоиться о "других": заменить "в год" на "других" выше.

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

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

Современная библиотека XML - довольно мощный инструмент, но также может быть сложной. Однако изучение основ вашей XML-библиотеки не так уж и тяжело, и это может быть очень удобно; среди прочего, он почти необходим на сегодняшнем рынке труда. Просто не увязывайтесь пространствами имен, схемами и другими функциями fancier, пока не получите необходимое.

Удачи.

Ответ 2

Xml сложно. Размышление о себе - плохая идея, даже худшая идея - создавать контент самостоятельно. Взгляните на спецификацию Xml 1.1.

Вам нужно иметь дело с такими вещами, как правильное кодирование, кодировка атрибутов (например, создание недопустимого xml), надлежащее экранирование CDATA, кодировка UTF, пользовательские объекты DTD и отсутствие метаданных в пространствах имен xml с пустым пространством имен, атрибуты пространства имен и т.д.

Изучите набор инструментов, там доступно много.

Ответ 3

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

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

Я знаю базу кода, которая использует пользовательскую манипуляцию строки для вывода xml (и стороннюю библиотеку для ввода). Это было хорошо начать, но через некоторое время стало настоящей проблемой.

Ответ 4

Да, используйте библиотеку.

Кто-то потратил время и силы на создание чего-то, что обычно лучше, чем то, что вы могли бы придумать. Обработка строк предназначена для отправки одного node, но как только вы начнете манипулировать DOM или использовать запрос XPath, библиотека сохранит вас.

Ответ 5

Не используя библиотеку, вы рискуете генерировать или анализировать данные, которые не были правильно сформированы, что рано или поздно произойдет. По той же причине document.write не допускается в XHTML, вы не должны писать свою разметку XML как строку.

Ответ 6

Да.

Нет смысла пропустить необходимый инструмент: даже писать xml нетривиально, поскольку нужно избегать этих амперсандов и lts, ​​не говоря уже о привязке пространства имен (при необходимости). И в конце libs обычно могут читать и писать xml не только более надежно, но и более эффективно (например, для Java).

Но вы, возможно, искали неправильные инструменты, если они кажутся слишком сложными. Связывание данных с использованием JAXB или XStream прост; но для простого прямого вывода XML я иду с StaxMate. Это может фактически упростить задачу разными способами (автоматически закрывает начальные теги, записывает объявления пространства имен, если needde и т.д.).

Ответ 7

Нет. Если вы можете самостоятельно разобрать его (как вы это делаете), и он будет масштабироваться для ваших нужд, вам не нужна библиотека.

Просто убедитесь, что ваши будущие потребности будут выполнены - сложное xml-создание лучше выполняется с использованием библиотек, некоторые из которых также очень удобны.

Ответ 9

Единственный раз, когда я делал что-то подобное в производственном коде, было то, что в колледже я построил предварительный процессор, чтобы мы могли встраивать XML-фрагменты из других файлов в более крупный XML. При загрузке мы сначала проанализируем эти вложения (ссылки на файлы в строках комментариев XML) и заменим их фактическим фрагментом, на который они ссылаются. Затем мы передадим объединенный результат в XML Parser.

Ответ 10

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

Ответ 11

Я не думаю, что использование XML-API DOM, который поставляется с JDK, затруднительно, легко создавать узлы элементов, атрибуты и т.д., а затем легко преобразовывать строки в документы DOM-документа DOM-документы в Строка

На первой странице google находит из Испании (пример испанского XML):

public String DOM2String(Document doc)
{
    TransformerFactory transformerFactory =TransformerFactory.newInstance();
    Transformer transformer = null;
    try{
        transformer = transformerFactory.newTransformer();
    }catch (javax.xml.transform.TransformerConfigurationException error){
        coderror=123;
        msgerror=error.getMessage();
        return null;
    }

    Source source = new DOMSource(doc);

    StringWriter writer = new StringWriter();
    Result result = new StreamResult(writer);
    try{
        transformer.transform(source,result);
    }catch (javax.xml.transform.TransformerException error){
        coderror=123;
        msgerror=error.getMessage();
        return null;
    }

    String s = writer.toString();
    return s;
}

public Document string2DOM(String s)
{
    Document tmpX=null;
    DocumentBuilder builder = null;
    try{
        builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
    }catch(javax.xml.parsers.ParserConfigurationException error){
        coderror=10;
        msgerror="Error crando factory String2DOM "+error.getMessage();
        return null;
    }
    try{
        tmpX=builder.parse(new ByteArrayInputStream(s.getBytes()));
    }catch(org.xml.sax.SAXException error){
        coderror=10;
        msgerror="Error parseo SAX String2DOM "+error.getMessage();
        return null;
    }catch(IOException error){
        coderror=10;
        msgerror="Error generando Bytes String2DOM "+error.getMessage();
        return null;
    }
    return tmpX;
}