MATLAB 帮助中心
本页翻译不是最新的。点击此处可查看最新英文版本。
命名空间: matlab.io.xml.dom
实体解析器的抽象基类
自 R2021a 起
matlab.io.xml.dom.EntityResolver 是用于派生实体解码器的抽象基类,这些解码器对解析器在解析 XML 文件或字符串时遇到的实体引用进行解码。
matlab.io.xml.dom.EntityResolver
matlab.io.xml.dom.EntityResolver 类是一个 handle 类。
handle
Abstract
true
ConstructOnLoad
HandleCompatible
有关类属性的信息,请参阅类属性。
全部展开
resolveEntity
res = resolveEntity(obj,resIdentifier) 定义 resolveEntity 方法的签名,该方法必须由从 matlab.io.xml.dom.EntityResolver 类派生的类实现。
res = resolveEntity(obj,resIdentifier)
resIdentifier 输入参量是 matlab.io.xml.dom.ResourceIdentifier 类的对象,用于标识要解析的实体。res 输出参量是字符串标量,用于指定解析指定的文件实体的资源。
resIdentifier
matlab.io.xml.dom.ResourceIdentifier
res
全部折叠
此示例创建一个实体解码器,配置解析器来使用该解码器,并解析包含实体引用的 XML 文件。
如果包含实体的文件的路径是相对于主 XML 文档的位置指定的,解析器可以使用默认实体解析器来解析路径。在这种情况下,您不必定义自己的解析器。为了确保此示例需要解析器,示例将包含实体和主 XML 文件的文件保存在同一级别的不同文件夹中。
在当前文件夹的子文件夹 chapters 中,创建包含章节的以下标记的文件 chapter.xml:
chapters
chapter.xml
<?xml version="1.0" encoding="UTF-8"?> <chapter><title color="red">Introduction</title></chapter>
在与 chapters 文件夹处于同一级别的子文件夹 books 中,创建包含书籍的以下标记的文件 books.xml:
books
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。
book.xml
&chapter;
chapters/chapter.xml
定义抽象类 matlab.io.xml.dom.EntityResolver 的子类,并将其命名为 BookEntityResolver。将 BookEntityResolver.m 保存在包含 chapters 和 books 文件夹的文件夹中。
BookEntityResolver
BookEntityResolver.m
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 类的实例。
import matlab.io.xml.dom.* resolver = BookEntityResolver(pwd);
创建一个解析器,并将其配置为使用解码器。
p = Parser(); p.Configuration.EntityResolver = resolver; p.Configuration.AllowDoctype = true;
将文件 book.xml 解析到一个 matlab.io.xml.dom.Document 对象中。
matlab.io.xml.dom.Document
filePath = "books/book.xml"; domDoc = parseFile(p,filePath);
要查看 chapter 实体是否已解析,请在文档中查找 chapter 元素节点。
chapter
nl = getElementsByTagName(domDoc,"chapter"); ch = node(nl,1)
ch = Element with properties: TagName: 'chapter' HasAttributes: 0 TextContent: 'Introduction' Children: [1×1 matlab.io.xml.dom.Element]
在 R2021a 中推出
matlab.io.xml.dom.ResourceIdentifier | matlab.io.xml.dom.ResourceIdentifierType | matlab.io.xml.dom.Parser | matlab.io.xml.dom.ParserConfiguration | matlab.io.xml.dom.Document
matlab.io.xml.dom.ResourceIdentifierType
matlab.io.xml.dom.Parser
matlab.io.xml.dom.ParserConfiguration
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
欧洲
亚太
联系您当地的办事处