可以通过使用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文件:
<!--这是一个示例info.xml文件。-->
配置文件查看器 application.Profiler
文件中的信息映射到以下类型的DOM节点:
元素节点-对应于标记名。在info.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”。
matlab.io.xml.dom.Document
|xmlread