Укажите отработанное время

Отработанное время:
Продуктивное время:
Bug 6304 - Исследовать возможность загрузки в одно DOM-дерево нескольких XML-файлов с помощью libxml   Make a simular bug
Summary: Исследовать возможность загрузки в одно DOM-дерево нескольких XML-файлов с по...
Status: CLOSED FIXED
Alias: None
Product: UniSet
Classification: Системы управления (Control Systems)
Component: main (show other bugs)
Version: unspecified
Hardware: PC All
: P4 minor
Target Milestone: ---
Assignee: Vitaly Lipatov
QA Contact: Pavel Vainerman
URL: http://xmlsoft.org/examples/index.htm...
Whiteboard:
Keywords:
Depends on:
Blocks:
 
In work:
Reported: 2010-10-26 09:27 MSD by Vitaly Lipatov
Modified: 2010-12-21 23:39 MSK (History)
2 users (show)

See Also:
Заявки RT:
Связано с:
Дата напоминания:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Vitaly Lipatov 2010-10-26 09:27:38 MSD
Для того, чтобы получить возможность использовать несколько XML-файлов, нужно
исследовать, как в одно DOM-дерево загрузить последовательно несколько XML-файлов с помощью libxml2.
Comment 1 Vitaly Lipatov 2010-12-17 03:01:50 MSK
Добавил поддержку вставки файлов:

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 2 Pavel Vainerman 2010-12-17 10:33:53 MSK
(В ответ на comment #1)
> Добавил поддержку вставки файлов:
Эх... я не успел закомитить...
Comment 3 Pavel Vainerman 2010-12-21 23:39:58 MSK
На всякий запишу и сюда.
Если требуется вставить только часть файла, то записывается это так:

<xi:include href="test2.xml" parse="xml" xpointer="xpointer(/sensors/*)"/>

в данном случае из файла test2.xml
вставляется секция <sensors> (без корневых тегов!).