XML文档是用来组织和展示有结构的数据的文档格式,Matlab本身有两个函数支持对XML文档的读取和写入,使用起来很方便,没有难度;难度在于如何使用函数返回的变量。两个XML读写的函数是:xmlread,xmlwrite。这两个函数是基于DOM(Document Object Model)的,xmlread的输出变量和xmlwrite的输入变量都是DOM的node。DOM是一种基于Java的对象,对象都是有属性和方法的,本篇文章主要是介绍这些属性和方法,在介绍之前,先介绍下两个函数的使用方法,再具体介绍DOM的相关细节。
1 XML的读写
语法:
DOMnode= xmlread(filename)
str = xmlwrite(DOMnode)
xmlwrite(filename,DOMnode)
通过其语法规则可以很方便的读写XML,但是要进一步使用读入的结果,就要进一步了解DOM的细节。
2 XML DOM
在DOM中,XML中的每个元素都被看做一个节点(node),访问该节点的属性和方法服从一定的标准,将在下一节讲到。下面通过实例来说明节点的类型:
<productinfo
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://www.mathworks.com/namespace/info/v1/info.xsd">
<!-- This is a sample info.xml file. -->
<list>
<listitem>
<label>Import Wizard</label>
<callback>uiimport</callback>
<icon>ApplicationIcon.GENERIC_GUI</icon>
</listitem>
<listitem>
<label>Profiler</label>
<callback>profile viewer</callback>
<icon>ApplicationIcon.PROFILER</icon>
</listitem>
</list>
</productinfo>
(1)Element nodes: 对应于标签(tag)的名称。如上例中的productinfo、list、listitem、label、callback、icon。
(2)Text nodes:element nodes中所包含的value。如上例中第一个element node label所包含的“ Import Wizard”,即是一个text node。
(3)Attribute nodes:标签的一对前括号中所包含的名字和值。如上例中的“xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance”,xmlns:xsi是该attribute node的名字,http://www.w3.org/2001/XMLSchema-instance是该node的值。
(4)Comment nodes:xml文档中其他的文本,如<!-- This is a sample info.xml file. -->
(5)Document nodes:对应整个xml文档,这种节点可以产生新的、以上所有的节点。
3 DOM的属性与方法
DOM中包含了不同的接口对象,用以描述不同的数据,摘要如下: