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文件如下。

<?xml version="1.0" encoding="utf-8"?>
<info>
<name>Jack</name>
<gender>male</gender>
<address>Beijing</address>
<phone>
<mobilephone>123456</mobilephone>
<landline>012345</landline>
</phone>
</info>

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
---------------------
作者:chensonglu
来源:CSDN
原文:https://blog.csdn.net/lkj345/article/details/52763790
版权声明:本文为博主原创文章,转载请附上博文链接!

matlab xml文件交互的更多相关文章

  1. Matlab中使用脚本和xml文件自动生成bus模块

    帮一个老师写的小工具 在一个大工程中需要很多bus来组织信号,而为了规范接口,需要定义很多BusObject,用Matlab语言手写这些BusObject比较费工夫 所以用xml配置文件来写,也便于更 ...

  2. 辅助的写与数据库交互的XML文件的类

    现在企业级WEB应用中与数据库交互的XML文件都是通过插件自动生成的,不过有些时候修改比较老的项目的时候也是需要手动的来做这一动作的!如下代码就是一个实现上述的功能的辅助类,在此记录一下以备后用! p ...

  3. Ajax实现xml文件数据插入数据库(二)--- ajax实现与jsp的数据交互。

    在上一篇文章中我们成功得到了重新组织后的数据,接下来需要做的便是将数据插入到数据库中了.在与数据库打交道的过程中有一些方法是普遍的,我们将这些通用方法封装到一个DbUtil类中,以便复用,封装好的Db ...

  4. 零基础学习java------39---------json格式交互,Restful(不懂),静态资源映射,SSM整合(ssm整合思想,application.xml文件详解(声明式事务管理),)

    一. json格式交互(知道) 1 . 回顾ajax基本语法 $.ajax({ url:"", // 请求的后台路径 data:{"":"" ...

  5. Qt-QML-C++交互实现文件IO系统-后继-读取XML文件和创建XML文件

    在前面两篇中,大致完成了一个文件IO的读和写操作.前面两篇文章链接 http://blog.csdn.net/z609932088/article/details/71488250 http://bl ...

  6. 【maven】 maven的setting.xml文件的详解

    1       Maven的安装 安装Maven之前要确保已经安装好了jdk,并且配置好了环境变量JAVA_HOME.具体安装步骤如下: 从apache网上下载maven项目的压缩包.下载地址为:ht ...

  7. 初学DOM树解析xml文件

    做了一次设计模式实验的题目: 某软件公司为新开发的智能手机控制与管理软件提供了一键备份功能,通过该功能可以将原本存储在手机中的通信录.短信.照片.歌曲等资料一次性全部拷贝到移动存储介质(例如MMC卡或 ...

  8. 【转】Mybatis 3.1中 Mapper XML 文件 的学习详解

    MyBatis 真正的力量是在映射语句中.这里是奇迹发生的地方.对于所有的力量,SQL 映射的 XML 文件是相当的简单.当然如果你将它们和对等功能的 JDBC 代码来比较,你会发现映射文件节省了大约 ...

  9. Spring MVC 配置文件dispatcher-servlet.xml 文件详解

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

随机推荐

  1. 纯CSS方块转化梯形动画

    http://jasonning92.github.io/JasonsBlog/pages/%E7%BA%AFCSS%E6%96%B9%E5%9D%97%E8%BD%AC%E5%8C%96%E6%A2 ...

  2. hdu-4632 Palindrome subsequence (回文子序列计数)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4632 问题要求回答一串字符串中回文子序列的数量,例如acbca就有 a,c,b,c,a,cc,aa,a ...

  3. Linux简单了解

    Linux内核最初只是由芬兰人李纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的. Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和U ...

  4. 一篇文章一张思维导图看懂Android学习最佳路线(转载)

    Android学习路线从4个阶段来对Android的学习过程做一个全面的分析:Android初级.中级.高级以及资深工程师.只针对Android应用开发,不针对Rom开发和逆向工程等.方便起见虚拟“小 ...

  5. csu oj 1341 string and arrays

    Description 有一个N*N的字符矩阵,从上到下依次记为第1行,第2行,……,第N行,从左至右依次记为第1列,第2列,……,第N列. 对于这个矩阵会进行一系列操作,但这些操作只有两类: (1) ...

  6. echarts3使用总结2

    接着上一篇文章补充一点项目中遇到的问题及解决方法 1.y轴正负轴调换  yAxis: {     inverse: false,  //y轴正负轴调换 }, 2.去掉图表背景线 yAxis: [   ...

  7. centos命令行系列之centos6防火墙的关闭以及开启

    输入:cat /etc/issue   查看版本 (一)通过service命令 注:service命令开启以及关闭防火墙为即时生效,下次重启机器的时候会自动复原 查看防火墙状态:service ipt ...

  8. application使用@符合问题:'@' that cannot start any token. (Do not use @ for indentation)

    在application配置文件中使用@出现异常: Exception in thread "main" while scanning for the next token fou ...

  9. JavaScript基础(三)

    十三.JS中的面向对象 创建对象的几种常用方式 1.使用Object或对象字面量创建对象 2.工厂模式创建对象 3.构造函数模式创建对象 4.原型模式创建对象 1.使用Object或对象字面量创建对象 ...

  10. :after 写三角形 border

    .tooltip:after { content: ''; position: absolute; border: 6px solid #5190ac; border-color: #5190ac t ...