Dom По сравнению с Саксофоном - создание Xmls

Я знаю, что различия между Sax и Dom являются довольно существенными относительно парсинга Xml, но что относительно того, чтобы создать? существует ли даже способ создать новый Xml с помощью Саксофона или что, если я хочу создать новый XML-файл на основе своих данных в моей программе, я должен буду использовать DOM?

Спасибо

6
задан Idan 25 February 2010 в 07:27
поделиться

8 ответов

SAX есть, цитируя википедию:

SAX (Простой API для XML) - это последовательный доступ парсер API для XML.
SAX предоставляет механизм для чтения данных из XML-документа .

т.е. SAX отлично подходит для чтения XML-документа, но если вы хотите его написать, вы, вероятно, будете использовать DOM.

7
ответ дан 8 December 2019 в 12:59
поделиться

Вы можете использовать SAX для создания XML. См. Следующее:

http://code.google.com/p/jlibs/wiki/XMLDocument

Он написан на Java. но того же можно добиться с помощью C ++;

4
ответ дан 8 December 2019 в 12:59
поделиться
  • DOM используется, когда ваши данные умещаются в памяти с удобным API.
  • С помощью SAX вы можете записывать огромные объемы данных, SAX также обеспечивает более высокую производительность.

Вам также может быть интересно следующее. Каковы различия между SAX и DOM парсером

и DOM и SAX на практике

2
ответ дан 8 December 2019 в 12:59
поделиться

SAX предназначен для чтения XML-документов, а не для их написания.

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

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

Я не знаю о библиотеке, которая помогла бы написать XML-документ, но если бы я уже использовал SAX, имея свою собственную структуру данных, я бы не стал беспокоиться о DOM.

2
ответ дан 8 December 2019 в 12:59
поделиться

Модель DOM - это естественный выбор для создания документов.

1
ответ дан 8 December 2019 в 12:59
поделиться

Я не видел API-интерфейсов записи в стиле SAX, они предназначены только для чтения. Для написания ваших вариантов используются DOM и различные нестандартные API-интерфейсы построителей (которые часто намного удобнее использовать, чем DOM). Нестандартизированные API-интерфейсы различаются от языка / библиотеки к другому, но см., Например, Строитель для Ruby . Я также разработал аналогичный API для C ++ с перегрузкой оператора: (пример просто тестирует возможный API, на самом деле он ничего не делает)

#include <string>

struct XMLBuilder {
  XMLBuilder& operator[](std::string const& elemName) { return *this; }
  XMLBuilder& operator()(std::string const& attrName, std::string const& attrValue) { return *this; }
  XMLBuilder& operator()(std::string const& innerText) { return *this; }
  XMLBuilder& operator()(XMLBuilder const& innerDoc) { return *this; }
};

int main() {
  XMLBuilder()
    ["contact"](XMLBuilder()
      ["name"]("Patrick Hines")
      ["phone"]("type", "home")("206-555-0144")
      ["phone"]("type", "work")("425-555-0145")
      ["address"](XMLBuilder()
        ["street"]("...")
        ["zip"]("12345")
      )
    )
  ;
}
1
ответ дан 8 December 2019 в 12:59
поделиться

Иногда я просто использую printf для создания простых XML, но обычно стоит использовать инструмент привязки XML, например XSD синтеза кода . Это создаст для вас иерархию классов на основе XSD. Вы просто заполняете иерархию объектов, и она создает для вас XML.

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

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

1
ответ дан 8 December 2019 в 12:59
поделиться

Вы можете попробовать найти эквивалент XmlWriter из .NET в вашем языке/платформе.

0
ответ дан 8 December 2019 в 12:59
поделиться
Другие вопросы по тегам:

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