powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / DOM-поддерево внешней разобранной сущности.
6 сообщений из 6, страница 1 из 1
DOM-поддерево внешней разобранной сущности.
    #38780806
Добрый вечер.
Изучаю сейчас вопрос, как программно обработать в PHP внешнюю разобранную сущность - xml-файл. Нужно получить DOM-дерево этого файла.
Пока открыл следующий способ:

Файл EntityExt.xml
Код: xml
1.
2.
3.
4.
5.
<![CDATA[
<main>
   Including file content.
</main>
]]>



Наш PHP-скрипт.
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
$domd = new DOMDocument();

$prolog = "<?xml version='1.0' encoding='Windows-1251' standalone='no' ?>";
$dtd = "<!DOCTYPE root [<!ENTITY ttt SYSTEM 'EntityExt.xml'>]>";

$xmlcode = $prolog.$dtd."<root>&ttt;</root>";
$domd->loadXML($xmlcode);

$rootelement = $domd->documentElement; //Получаем коренной элемент.
$entityref = $rootelement->firstChild; //Получаем узел-ссылку на сущность.

$entitycode = $entityref->textContent;

//Создаём объект DOMDocument для кода из EntityExt.xml и загружаем этот код.
$domdincl = new DOMDocument();
$domdincl->loadXML($entitycode);

//Пробуем выделить из созданного на основе EntityExt.xml документа коренной узел и, для проверки, получить его имя.
$inclrootelement = $domdincl->documentElement;
echo $inclrootelement->nodeName, "<br><br>"; //ПОЛУЧИЛОСЬ! - Выводит правильное имя.



Но мне не слишком нравится этот способ, поскольку в xml-файле всё приходится прятать в CDATA, да и гемморно получать сначала строку через textContent, потом на основе неё делать новый документ и т.д. Может, есть другой способ, позволяющий получить из подключаемого xml-файле не текстовое содержимое, а сразу DOM-объекты?

P.S.: Прошу прощения у модераторов, если, как это может быть, пишу не в том разделе. Просто мне кажется, что данный вопрос касается технологии xml не в меньшей степени, чем PHP.
...
Рейтинг: 0 / 0
DOM-поддерево внешней разобранной сущности.
    #38780813
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Регэкспом выкусить?
Летучий Змейпоскольку в xml-файле всё приходится прятать в CDATAА зачем Вы прячете?
Летучий ЗмейМожет, есть другой способ, позволяющий получить из подключаемого xml-файле не текстовое содержимое, а сразу DOM-объекты?Содержимое CDATA - это текст. Точка.
...
Рейтинг: 0 / 0
DOM-поддерево внешней разобранной сущности.
    #38780817
_Vasilisk_Регэкспом выкусить?
Летучий Змейпоскольку в xml-файле всё приходится прятать в CDATAА зачем Вы прячете?


Прячу в CDATA, потому что иначе свойство textContent возвращает только текстовое содержимое из EntityExt.xml, а все элементы разметки теряются. Поэтому и приходится всё прятать в CDATA, чтобы в textContent оказалась и вся разметка. А я не хочу прятать в CDATA.

Про регэксп не понял, если честно =:)
...
Рейтинг: 0 / 0
DOM-поддерево внешней разобранной сущности.
    #38780821
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Летучий Змей,

Ничего не понял. Какая у Вас стоит исходная задача?
...
Рейтинг: 0 / 0
DOM-поддерево внешней разобранной сущности.
    #38780824
Сформировать DOM-дерево из EntityExt.xml.
...
Рейтинг: 0 / 0
DOM-поддерево внешней разобранной сущности.
    #38780840
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Летучий ЗмейСформировать DOM-дерево из EntityExt.xml.Удалите СDATA теги и загрузите в DOMDocument
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / DOM-поддерево внешней разобранной сущности.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]