Как зайти в Даркнет?!
25th January, 01:11
6
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
895
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
914
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
906
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4351
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Важно ли использовать библиотеки для управления XML?
Я использую Java back end для создания строки XML, которая передается в браузер. В настоящее время я использую простую манипуляцию строкой для создания этого XML. Важно ли, чтобы я использовал некоторую библиотеку XML в Java для создания строки XML? Я считаю, что библиотеки очень трудно использовать по сравнению с тем, что мне нужно.
Это не обязательно, но желательно. Однако, если строка манипуляции работает для вас, то пойти на это! Есть много случаев, когда небольшой или простой текст XML может быть безопасно построен вручную.
Просто имейте в виду, что создание текста XML сложнее, чем кажется. Вот некоторые критерии, которые я бы рассмотрел:
- Во-первых: насколько вы контролируете информацию, которая поступает в xml?
Чем меньше у вас контроля над исходными данными, тем больше вероятность возникновения проблем и тем выгоднее становится библиотека. Например: (a) можете ли вы гарантировать , что имена элементов никогда не будут иметь символ, который является незаконным в имени? (b) как насчет кавычек в содержании атрибута? Могут ли они произойти,и справляетесь ли вы с ними? (c) содержат ли данные когда-либо что-либо, что может потребоваться закодировать как сущность (например, меньше, чем часто требуется выводить как < ); правильно ли вы это делаете?
- Во-вторых, ремонтопригодность: легко ли понять код, который строит XML кем-то другим ?
Вы, вероятно, не хотите застрять с кодом на всю жизнь. Я работал с подержанным кодом C++, который вручную строит XML, и он может быть удивительно неясным. Конечно, если это ваш личный проект, то вам не нужно беспокоиться о "others": замените "in a year" на "others" выше.
Я бы не беспокоился о производительности. Если ваш XML достаточно прост, чтобы вы могли написать его вручную, любые накладные расходы из библиотеки, вероятно, бессмысленны. Конечно, ваш случай может быть другим, но вы должны измерить, чтобы доказать это в первую очередь.
Наконец, Да; вы можете вручную построить текст XML, если это достаточно просто; но не зная доступных библиотек, вероятно , не является правильной причиной.
Современная библиотека XML-это довольно мощный инструмент,но он также может быть сложным. Тем не менее, изучение основ вашей библиотеки XML не так уж сложно, и это может быть довольно удобно; среди прочего, это почти необходимое условие на сегодняшнем рынке труда. Просто не увязайте в пространствах имен, схемах и других причудливых функциях, пока не получите самое необходимое.
Удачи.
Xml сложно. Разбор себя-плохая идея, еще хуже идея генерировать контент самостоятельно. Взгляните на спецификацию Xml 1.1.
Вы должны иметь дело с такими вещами, как правильное кодирование, кодирование атрибутов (например, создает недопустимое xml), правильное CDATA экранирование, кодирование UTF, пользовательские сущности DTD, и это без бросания в микс пространств имен xml с пустым пространством имен по умолчанию, атрибутами пространства имен и т. д.
Изучите инструментарий, есть много доступных.
Я думаю, что пользовательская манипуляция строками прекрасна, но вы должны иметь в виду две вещи:
- Ваш код не такой зрелый, как библиотека. Выделите время в вашем плане для обработки ошибок, которые всплывают.
- Ваш подход, вероятно, не будет масштабироваться, а также сторонняя библиотека, когда xml начнет расти (как с точки зрения производительности, так и простоты использования).
Я знаю кодовую базу, которая использует пользовательские строковые манипуляции для вывода xml (и стороннюю библиотеку для ввода). Это было прекрасно для начала, но через некоторое время стало настоящей проблемой.
Да, используйте библиотеку.
Кто - то потратил время и усилия, чтобы создать что-то, что обычно лучше, чем то, что вы могли бы придумать. Строковая манипуляция предназначена для отправки одного узла, но как только вам понадобится манипулировать DOM или использовать запрос XPath, библиотека спасет вас.
Да.
Нет смысла пропускать важный инструмент: даже написание xml нетривиально с необходимостью избежать этих амперсандов и lts, не говоря уже о привязках пространства имен (если это необходимо). И в конце концов libs может вообще читать и писать xml не только более надежно, но и более эффективно (esp. так что для Java).
Но вы, возможно, смотрели на неправильные инструменты, если они кажутся чрезмерно сложными. Привязка данных с использованием JAXB или XStream проста; но для простого прямого вывода XML я иду с StaxMate . Это может фактически упростить задачу во многих отношениях (автоматически закрывает начальные теги, пишет объявления пространства имен, если это необходимо и т. д.).
Нет - если вы можете разобрать его самостоятельно (как вы это делаете), и он будет масштабироваться для ваших нужд, вам не нужна никакая библиотека.
Просто убедитесь, что ваши будущие потребности будут удовлетворены - сложное создание xml лучше делать с использованием библиотек, некоторые из которых также имеют очень простые вкусы.
Вам не нужно использовать библиотеку для разбора XML, но проверьте этот вопрос
Какие соображения следует принять, прежде чем изобретать велосипед?
прежде чем вы начнете писать свой собственный код для разбора / генерации xml.
Единственный раз, когда я сделал что-то подобное в производственном коде, это когда мы с коллегой построили предварительный процессор, чтобы мы могли вставлять фрагменты XML из других файлов в больший XML. При загрузке мы сначала проанализируем эти вставки (ссылки на файлы в строках комментариев XML) и заменим их фактическим фрагментом, на который они ссылаются. Затем мы передадим объединенный результат парсеру XML.
Я не думаю, что использование DOM XML API, которое поставляется с JDK, сложно, легко создавать узлы элементов, атрибуты и т. д... и позже легко конвертировать строки в документ DOM sor 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;
}