В Windows для синтаксического анализа XML можно использовать XML-интерфейс на основе COM, но мне было интересно, есть ли там библиотеки XML C++, которые я могу использовать для этой цели, без необходимости вникать в тонкости COM?Библиотека C++ XML для использования под Windows
ответ
Да, конечно.
Если вам не нужно подтверждение, я хотел бы предложить TinyXML++, который также очень прост в использовании:
ticpp::Document doc(pcFilename);
doc.LoadFile();
// parse through all elements
std::string strName;
std::string strValue;
ticpp::Iterator<ticpp::Element> child;
for(child = child.begin(doc.FirstChildElement()); child != child.end(); child++)
{
// parse through all the attributes of this fruit
ticpp::Iterator<ticpp::Attribute> attribute;
for(attribute = attribute.begin(child.Get()); attribute != attribute.end(); attribute++)
{
attribute->GetName(&strName);
attribute->GetValue(&strValue);
std::cout << strName << ": " << strValue << std::endl;
}
std::cout << std::endl;
}
Если вам нужно подтверждение, рассмотреть вопрос об использовании XercesC++.
Я использовал XercesC++ в прошлом для хорошего эффекта. Недавно я использовал MSXML, что было болью в сравнении.
AFAIK, самая эффективная библиотека анализатора с открытым исходным кодом для C, C#, C++ и Java в настоящее время - VTD-XML. Что касается производительности, он превосходит DOM, SAX и XPath. Я преобразовал библиотеку в Delphi для моего частного проекта, и я обнаружил, что VTD-XML похож на то, что он утверждает. См. VTD-XML Benchmark.
Expat XML Parser также является хорошим. Я думаю, вы найдете для него C++ wapper.
boost.property_tree имеет XML-анализатор (на основе RapidXml).
Это только заголовок и не имеет зависимостей, кроме Boost.
Я использовал xerces и expat (обе библиотеки C) изнутри C++. Оба делают свою работу хорошо, но если бы мне пришлось переписать мой код снова, я бы, вероятно, использовал libxml2. Xerces IMO слишком велика и огромна для моих нужд, а expat - слишком низкоуровневая. Я понимаю, что libxml2 является хорошей библиотекой более высокого уровня. (Я использовал привязки python lxml для libxml2, и они работают красиво.).
О, и я использовал tinyxml немного (несколько лет назад), но нашел свою модель DOM слишком медленной для моих нужд.
Предлагаю pugixml. Pugixml является Light-weight, simple and fast XML parser for C++ with XPath support
Вот quick start guide, а вот benchmark, обратите внимание, как только AsmXML быстрее, чем pugixml.
- 1. Библиотека XML-RPC для C++
- 2. C библиотека для файлов JSON в Windows
- 3. Библиотека сценариев под Windows Phone 7
- 4. Хорошая библиотека C++ GUI для Windows
- 5. библиотека C++ для XMLRPC
- 6. Библиотека XML для JSON
- 7. C Библиотека XML для встроенных систем
- 8. Библиотека сжатия/декомпрессии XML для C#/.NET
- 9. приложения для Windows ленты C# библиотека
- 10. JSON парсер для C++ под Windows CE
- 11. GUI Framework/Lib для C++ под Windows
- 12. XML-библиотека для Java
- 13. библиотека Bluetooth для Windows,
- 14. Библиотека уведомлений для Windows
- 15. общая библиотека под ubuntu
- 16. Есть ли библиотека C для проверки XML в XML-схеме?
- 17. памяти программы C под Windows,
- 18. Утилита/библиотека для уборки xml
- 19. Примеры использования Linq для XML в C# для анализа XML
- 20. Как построить QJson под Windows для использования с QtCreator?
- 21. Использование GLEW для использования расширений OpenGL под Windows
- 22. Библиотека Windows и Mac XML для delphi XE2
- 23. Библиотека доков для C#
- 24. Текстовая база Библиотека пользовательского интерфейса для (C или C++) Windows?
- 25. C/C++ Windows + Linux ZIP библиотека для распаковки?
- 26. Библиотека XQuery под Python
- 27. Разработка для iOS под Windows
- 28. Существует ли библиотека клиентов RDP под Linux?
- 29. Достойный инструмент/библиотека для C++ для обработки XML?
- 30. Кросс-платформенная библиотека для управления путями Windows?
pugxml не очень согласованный парсер, vtd-xml is. –
Это может быть правдой. Я немного поглядел на vtd-xml, и я обнаружил, что лицензия GPL и, как ни странно, пространство имен C++ называется * com_ximpleware *. pugixml (обратите внимание на i от имени) небольшой, простой в использовании, хорошо документированный, быстрый и написан на ... C++ (я знаю, что vtd-xml имеет реализацию на C++, но уровень C++ не является тоже самое)! –
Я не знаю (или соглашаюсь) с частью C++ ness, но он работает для вас, это хорошая новость. –