Matlab读写xml文件 您所在的位置:网站首页 xlm后缀文件 Matlab读写xml文件

Matlab读写xml文件

2024-07-09 20:06| 来源: 网络整理| 查看: 265

xml文件以文档对象模型表示,简称DOM(Document Object Model)。在Matlab中,使用xmlread读取xml文件成DOM节点,对xml文件的操作转化成对DOM节点的操作,使用xmlwrite把DOM节点写入到xml文件中。

Matlab写xml文件

以个人信息为例,通常个人的信息包括姓名、性别、住址和电话等等,其中电话可能有多个,比如手机和座机,代码如下。

% file name filename = 'info'; % create document docNode = com.mathworks.xml.XMLUtils.createDocument('info'); % document element docRootNode = docNode.getDocumentElement(); % name nameNode = docNode.createElement('name'); nameNode.appendChild(docNode.createTextNode(sprintf('Jack'))); docRootNode.appendChild(nameNode); % gender genderNode = docNode.createElement('gender'); genderNode.appendChild(docNode.createTextNode(sprintf('male'))); docRootNode.appendChild(genderNode); % address addressNode = docNode.createElement('address'); addressNode.appendChild(docNode.createTextNode(sprintf('Beijing'))); docRootNode.appendChild(addressNode); % phone phoneElement = docNode.createElement('phone'); docRootNode.appendChild(phoneElement); mobilephoneNode = docNode.createElement('mobilephone'); mobilephoneNode.appendChild(docNode.createTextNode('123456')); phoneElement.appendChild(mobilephoneNode); landlineNode = docNode.createElement('landline'); landlineNode.appendChild(docNode.createTextNode('012345')); phoneElement.appendChild(landlineNode); % xmlwrite xmlFileName = [filename,'.xml']; xmlwrite(xmlFileName,docNode);

简单理解xml可以分为Document,Element和Node三级结构,Element可以嵌套Element和Node,Node是最小的xml单位。

注意其中getDocumentElement(), createElement()和createTextNode()三个方法,分别是获取Document, Element和Node的三个方法。此外注意appendChild()前面的元素决定了xml元素的结构,最后通过xmlwrite方法写入到xml文件中,最终xml文件如下。

Jack male Beijing 123456 012345 Matlab读xml文件

读取过程不光包括读入xml文件,还需要解析,以之前存储的info.xml为例,代码如下。

% read xml xmlDoc = xmlread('info.xml'); % name node name_array = xmlDoc.getElementsByTagName('name'); name = char(name_array.item(0).getTextContent()); disp(['name:' name]); % phone element phone_array = xmlDoc.getElementsByTagName('phone'); phone = phone_array.item(0); disp([char(phone.item(1).getNodeName()) ':' char(phone.item(1).getTextContent())]); disp([char(phone.item(3).getNodeName()) ':' char(phone.item(3).getTextContent())]);

首先用xmlread读入整个xml文件,此后通过getElementsByTagName(‘name’)找出name节点,注意没有getNodeByTagName方法,并且getElementsByTagName()得到的是一个NodeList数组,因为xml允许节点重名,可能有多个name节点,所以通过item(0)得到第一个name节点,并且通过getTextContent()方法输出name节点的内容。

同样通过getElementsByTagName(‘phone’).item(0)找到phone节点,此处phone包含mobilephone和landline两个子节点,通过测试发现phone节点item(0),item(2)和item(4)都是#text的节点,item(1)和item(3)分别代表mobilephone和landline两个节点,通过getNodeName()和getTextContent()分别得到节点的名称和内容,结果如下。

name:Jack mobilephone:123456 landline:012345


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有