Summary: | Исследовать возможность загрузки в одно DOM-дерево нескольких XML-файлов с помощью libxml | ||
---|---|---|---|
Product: | [Системы управления (Control Systems)] UniSet | Reporter: | Vitaly Lipatov <lav> |
Component: | main | Assignee: | Vitaly Lipatov <lav> |
Status: | CLOSED FIXED | QA Contact: | Pavel Vainerman <pv> |
Severity: | minor | ||
Priority: | P4 | CC: | pv, sin |
Version: | unspecified | ||
Target Milestone: | --- | ||
Hardware: | PC | ||
OS: | All | ||
URL: | http://xmlsoft.org/examples/index.html#reader4.c | ||
Whiteboard: | |||
Заявки RT: | Связано с: | ||
Дата напоминания: |
Description
Vitaly Lipatov
2010-10-26 09:27:38 MSD
Добавил поддержку вставки файлов: commit 7ef28af3b6d2322cd724295c63a972b6f813fa1a Author: Vitaly Lipatov <lav@etersoft.ru> Date: Fri Dec 17 02:56:46 2010 +0300 UniXML: support for XInclude (see eterbug #6304) diff --git a/src/Various/UniXML.cc b/src/Various/UniXML.cc index efbf17a..c51a0ec 100644 --- a/src/Various/UniXML.cc +++ b/src/Various/UniXML.cc @@ -34,6 +34,7 @@ #include "UniSetTypes.h" #include "UniXML.h" #include "Exceptions.h" +#include <libxml/xinclude.h> using namespace UniSetTypes; using namespace std; @@ -91,6 +92,12 @@ void UniXML::open(const string _filename) doc = xmlParseFile(_filename.c_str()); if(doc == NULL) throw NameNotFound("UniXML(open): NotFound file="+_filename); ... + xmlXIncludeProcess(doc); + cur = getFirstNode(); filename = _filename; } Использовать так: <TAG xmlns:xi="http://www.w3.org/2001/XInclude"> <xi:include href="test2.xml"/> </TAG> Отсутствие файла будет проигнорировано, с предупреждением. (В ответ на comment #1) > Добавил поддержку вставки файлов: Эх... я не успел закомитить... На всякий запишу и сюда. Если требуется вставить только часть файла, то записывается это так: <xi:include href="test2.xml" parse="xml" xpointer="xpointer(/sensors/*)"/> в данном случае из файла test2.xml вставляется секция <sensors> (без корневых тегов!). |