Этот пример создает решатель сущности, конфигурирует анализатор для использования решателя и анализирует XML- файл, содержащее ссылку на сущность.
Если путь к файлу, содержащему сущность, задан относительно расположения основного XML-документа, анализатор может использовать решатель сущности по умолчанию для разрешения пути. В этом случае вы не должны определять свой собственный решатель. Чтобы убедиться, что для этого примера требуется решатель, в примере сохранен файл, содержащий сущность и основной XML-файл, в разных папках на одном уровне.
В подпапке chapters
текущей папки, создайте файл chapter.xml
который содержит эту разметку для главы:
В подпапке books
то есть на том же уровне, что и chapters
папка, создайте файл books.xml
который содержит эту разметку для книги:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book [
<!ENTITY chapter SYSTEM "chapters/chapter.xml">
]>
<book>
&chapter;
</book>
book.xml
содержит ссылку на сущность &chapter;
и объявляет, что ресурс для сущности chapters/chapter.xml
.
Задайте подкласс абстрактного класса matlab.io.xml.dom.EntityResolver
и назовите его BookEntityResolver
. Сохраните BookEntityResolver.m
в папке, содержащей chapters
и books
папка.
classdef BookEntityResolver < matlab.io.xml.dom.EntityResolver
properties
BaseDir
end
methods
function obj = BookEntityResolver(baseDir)
obj@matlab.io.xml.dom.EntityResolver()
obj.BaseDir = baseDir;
end
function res = resolveEntity(obj,ri)
import matlab.io.xml.dom.ResourceIdentifierType
if getResourceIdentifierType(ri) == ResourceIdentifierType.ExternalEntity
res = fullfile(obj.BaseDir, ri.SystemID);
end
end
end
end
Создайте решатель сущности как образец BookEntityResolver
класс.
Создайте анализатор и сконфигурируйте его, чтобы использовать разрешитель.
Проанализируйте файл book.xml
в matlab.io.xml.dom.Document
объект.
Чтобы увидеть, что chapter
сущность был разрешаема, найти chapter
узел элемента в документе.
ch =
Element with properties:
TagName: 'chapter'
HasAttributes: 0
TextContent: 'Introduction'
Children: [1×1 matlab.io.xml.dom.Element]