主要内容

将XML文件导入到文档对象模型中

可以通过使用matlab.io.xml.dom.Parser对象还是对象xmlread作用

这个matlab.io.xml.dom.Parser类属于MATLAB®XML处理API(MAXP)。当您使用MAXP时分析器对象来读取XML文件,生成的DOM文档节点表示为matlab.io.xml.dom.Document对象获取可用于处理的类的列表文件对象,请参见matlab.io.xml.dom.您不需要Java®使用MAXP类的软件。

使用。创建的DOM文档节点对象xmlread,则必须使用JavaAPI进行XML处理(JAXP)。有关JAXP方法和属性的列表,请参见org.w3c.dom包描述在https://docs.oracle.com/javase/7/docs/api

XML文档对象模型

在文档对象模型中,XML文件中的每个项目都对应一个节点。用于创建和访问节点的属性和方法遵循万维网联盟制定的标准。

例如,考虑以下示例XML文件:

<!--这是一个示例info.xml文件。-->配置文件查看器application.Profiler

文件中的信息映射到以下类型的DOM节点:

  • 元素节点-对应于标记名。在info.xml文件中,这些标记对应于元素节点:

    • 产品信息

    • 列表

    • 列表项

    • 标签

    • 回调

    • 偶像

    在这种情况下列表元素是列表项元素子节点。这个产品信息元素是根元素节点。

  • 文本节点—包含与元素节点关联的值。每个文本节点都是元素节点的子节点。例如,导入向导文本节点是第一个节点的子节点标签元素节点。

  • 属性节点-包含与元素节点关联的名称和值对。例如,在标签元素节点,颜色属性的名称是和吗蓝色这就是它的价值所在。属性节点不是任何节点的父节点或子节点。

  • 注释节点-在文件中的表单中包含其他文本<!——样品评论>

  • 文档节点—对应整个文件。使用文档节点上的方法来创建新的元素、文本、属性或注释节点。

使用MAXP解析器读取XML文件

此示例使用matlab.io.xml.dom.Parser对象读取info.xml文件到一个matlab.io.xml.dom.Document该文件包含多个节点列表项元素。每个元素列表项元素包含一个标签回调要素该示例使用MAXP方法查找回调元素,该元素对应于标签有文本内容的图工具

将文件读入文件对象。

infoFile=fullfile(matlabroot,“工具箱/ matlab /一般/ info.xml”); 信息标签=“绘图工具”;infoCbk='';itemFound=false;导入matlab.io.xml.dom*xDoc = parseFile(解析器,infoFile);

找到所有的列表项通过调用getElementsByTagName方法,该方法返回matlab.io.xml.dom.NodeList对象。

allListItems = getElementsByTagName (xDoc,“列”);

每人列表项元素,比较标签元素到图工具。找到正确的标签后,获取回调要访问节点主义者对象,使用节点方法,该方法使用基于一的索引项目方法,该方法使用基于零的索引。

长度=allListItems.length;对于i=1:length thisListItem = node(alllistitem,i);childNode = getFirstChild (thisListItem);~isempty(childNode)%过滤掉文本、注释和处理说明。如果isa (childNode“matlab.io.xml.dom.Element”)%假设每个元素都有一个子文本childText=getData(getFirstChild(childNode));开关getTagName (childNode)案例“标签”itemFound=strcmp(childText,infoLabel);案例“回调”infoCbk=childText;终止终止childNode = getNextSibling (childNode);终止如果项目发现打破其他的infoCbk=''终止终止

显示结果。

fprintf(“项目“%s”有一个“%s”的回调。\n”,infoLabel,infoCbk);
项目“Plot Tools”的回调为“figure;plottools”。

使用xmlread

本例使用xmlread阅读info.xml文件转换为DOM文档节点和JavaAPI,用于XML处理方法,以查找文本内容回调元素,该元素对应于标签有文本内容的图工具

infoFile=fullfile(matlabroot,“工具箱/ matlab /一般/ info.xml”); 信息标签=“绘图工具”;infoCbk='';itemFound = false;xDoc = xmlread (infoFile);allListItems = getElementsByTagName (xDoc,“列”);%项目列表索引是从零开始的。长度= allListItems.getLength-1;对于i=0:length thisListItem = item(alllisttitem,i);childNode = getFirstChild (thisListItem);~isempty(childNode)%过滤掉文本、注释和处理说明。如果childNode.getNodeType==childNode.ELEMENT\u节点%假设每个元素都有一个子org.w3c.dom.TextchildText=char(childNode.getFirstChild.getData);开关char (childNode.getTagName)案例“标签”itemFound=strcmp(childText,infoLabel);案例“回调”infoCbk=childText;终止终止childNode = getNextSibling (childNode);终止如果项目发现打破其他的infoCbk=''终止终止fprintf(“项目“%s”有一个“%s”的回调。\n”,infoLabel,infoCbk);
项目“Plot Tools”的回调为“figure;plottools”。

另见

|

相关的话题

外部网站