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

голоса
11

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

Задан 24/08/2008 в 06:48
источник пользователем
На других языках...                            


11 ответов

голоса
11

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

Просто следует помнить, что при создании текста XML сложнее, чем выглядит. Вот некоторые критерии, я бы рассмотреть следующие вопросы:

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

Чем меньше у вас контроль на исходных данных, тем более вероятно , вы будете иметь проблемы, и тем более выгодная библиотека становится. Например: (а) Можете ли вы гарантировать , что имена элементов никогда не будет иметь характер , что является незаконным в имени? (б) Как насчет цитаты в содержимом атрибута? Могут ли они случаются, и вы их обработки? (с) содержит ли когда - либо данные , все , что может быть необходимо кодируется как субъекта (например , менее чем , который часто должен быть выведен как & л; ); Вы делаете это правильно?

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

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

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

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

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

Удачи.

Ответил 24/08/2008 в 08:17
источник пользователем

голоса
7

Xml трудно. Синтаксический себя это плохая идея, это даже хуже, идея создания контента самостоятельно. Посмотрите на Xml 1.1 спецификации.

Вы должны иметь дело с такими вещами, как продходящие, атрибут кодирования (например, производит Invalid XML), правильный CDATA ускользающего, кодировки UTF, пользовательский DTD сущности, и это не бросать в смеси Пространства имен XML с по умолчанию / пустым пространством имен, атрибуты пространства имен , и т.д.

Учить инструментарий, есть много доступных.

Ответил 24/08/2008 в 11:07
источник пользователем

голоса
3

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

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

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

Ответил 24/08/2008 в 06:54
источник пользователем

голоса
2

Да.

Это не имеет никакого смысла, чтобы пропустить важный инструмент: даже писать XML является нетривиальным с необходимости избежать этих амперсандов и LTS, не говоря уже о пространстве имен привязок (при необходимости). И в конце концов LIBS обычно может читать и писать XML не только надежнее, но более эффективно (особенно так для Java).

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

Ответил 09/04/2009 в 07:27
источник пользователем

голоса
2

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

Ответил 24/08/2008 в 17:59
источник пользователем

голоса
2

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

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

Ответил 24/08/2008 в 06:56
источник пользователем

голоса
1

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

Ответил 26/08/2008 в 11:25
источник пользователем

голоса
1

Вы не должны использовать библиотеку для разбора XML, но проверить этот вопрос
Какие соображения должны быть сделаны прежде , чем изобретать колесо?
прежде чем начать писать свой собственный код для синтаксического анализа / генерации XML.

Ответил 24/08/2008 в 18:05
источник пользователем

голоса
1

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

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

Ответил 24/08/2008 в 06:50
источник пользователем

голоса
0

Я не думаю, что с помощью DOM XML API которым поставляется с JDK трудно, это легко создавать узлы Element, атрибуты и т.д. ... и позже это легко конвертировать строки в 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;
}
Ответил 24/08/2008 в 08:03
источник пользователем

голоса
0

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

Ответил 24/08/2008 в 08:00
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more