精华内容
下载资源
问答
  • MATLAB 读写xml文件

    2018-12-15 15:12:19
    xml文件以文档对象模型表示,简称DOM(Document Object Model)。...Matlab写xml文件 以个人信息为例,通常个人的信息包括姓名、性别、住址和电话等等,其中电话可能有多个,比如手机和座机,代码如下。 % fil...

    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
     

    展开全文
  • Matlab读写xml文件

    万次阅读 2016-10-09 11:07:18
    xml文件以文档对象模型表示,简称DOM(Document Object Model)。在Matlab中,使用xmlread读取xml文件成DOM节点,对xml文件的操作转化成对DOM节点的操作,使用xmlwrite把DOM节点写入到xml文件中。

    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
    展开全文
  • 一个MATLAB 写xml 文件的例子

    千次阅读 2013-09-25 01:24:31
    下面是我在CSDN上发现一个兄弟自己写的用matlab写xml的代码。 于是决定取百家之长,特此转载,希望造福一方啊 tempname = 'myxml'; docNode = com.mathworks.xml.XMLUtils.createDocument('obj') docRootNode = ...

    最近在做project的时候 需要处理大量的XML,发现不仅省事,而且效率极高。

    下面是我在CSDN上发现一个兄弟自己写的用matlab写xml的代码。

    于是决定取百家之长,特此转载,希望造福一方啊

    tempname = 'myxml';
    
    docNode = com.mathworks.xml.XMLUtils.createDocument('obj')
    docRootNode = docNode.getDocumentElement;
    %docRootNode.setAttribute('attr_name','attr_value');
    
        IDNode = docNode.createElement('ID'); 
        IDNode.appendChild(docNode.createTextNode(sprintf('%i',5)));
        docRootNode.appendChild(IDNode);
        
        objNmNode = docNode.createElement('objNm'); 
        objNmNode.appendChild(docNode.createTextNode(sprintf('plane####################1008')));
        docRootNode.appendChild(objNmNode);
    
    
        thisElement = docNode.createElement('FDs'); 
        docRootNode.appendChild(thisElement);
        
            dataNode = docNode.createElement('FD1');
            dataNode.appendChild(docNode.createTextNode(sprintf('4 43 3 32 1 6 0 3 1 2   ')));
            thisElement.appendChild(dataNode);
            
            dataNode = docNode.createElement('FD2');
            dataNode.appendChild(docNode.createTextNode(sprintf('4 43 3 32 1 6 0 3 1 2   ')));
            thisElement.appendChild(dataNode);
            
            dataNode = docNode.createElement('FD3');
            dataNode.appendChild(docNode.createTextNode(sprintf('4 43 3 32 1 6 0 3 1 2   ')));
            thisElement.appendChild(dataNode);
            
            dataNode = docNode.createElement('FD4');
            dataNode.appendChild(docNode.createTextNode(sprintf('4 43 3 32 1 6 0 3 1 2   ')));
            thisElement.appendChild(dataNode);
            
            
            
        thisElement = docNode.createElement('FD_Clusters'); 
        docRootNode.appendChild(thisElement);
        
            dataNode = docNode.createElement('FD_Clusters1');
            dataNode.appendChild(docNode.createTextNode(sprintf('4 43 3 32 1 6 0 3 1 2   ')));
            thisElement.appendChild(dataNode);
            
            dataNode = docNode.createElement('FD_Clusters2');
            dataNode.appendChild(docNode.createTextNode(sprintf('4 43 3 32 1 6 0 3 1 2   ')));
            thisElement.appendChild(dataNode);
            
            dataNode = docNode.createElement('FD_Clusters3');
            dataNode.appendChild(docNode.createTextNode(sprintf('4 43 3 32 1 6 0 3 1 2   ')));
            thisElement.appendChild(dataNode);
            
            dataNode = docNode.createElement('FD_Clusters4');
            dataNode.appendChild(docNode.createTextNode(sprintf('4 43 3 32 1 6 0 3 1 2   ')));
            thisElement.appendChild(dataNode);
            
        
        FD_histoNode = docNode.createElement('FD_histogram'); 
        FD_histoNode.appendChild(docNode.createTextNode(sprintf('17 10 8 5 3 2 1 ')));
        docRootNode.appendChild(FD_histoNode);
    
    docNode.appendChild(docNode.createComment('this is a comment'));
    
    xmlFileName = [tempname,'.xml'];
    xmlwrite(xmlFileName,docNode);
    type(xmlFileName);
    生产XML文件如下:

     <? xml version="1.0" encoding="utf-8" ?>
    - < obj >
      < ID > 5 </ ID >
      < objNm > plane####################1008 </ objNm >
    - < FDs >
      < FD1 > 4 43 3 32 1 6 0 3 1 2 </ FD1 >
      < FD2 > 4 43 3 32 1 6 0 3 1 2 </ FD2 >
      < FD3 > 4 43 3 32 1 6 0 3 1 2 </ FD3 >
      < FD4 > 4 43 3 32 1 6 0 3 1 2 </ FD4 >
      </ FDs >
    - < FD_Clusters >
      < FD_Clusters1 > 4 43 3 32 1 6 0 3 1 2 </ FD_Clusters1 >
      < FD_Clusters2 > 4 43 3 32 1 6 0 3 1 2 </ FD_Clusters2 >
      < FD_Clusters3 > 4 43 3 32 1 6 0 3 1 2 </ FD_Clusters3 >
      < FD_Clusters4 > 4 43 3 32 1 6 0 3 1 2 </ FD_Clusters4 >
      </ FD_Clusters >
      < FD_histogram > 17 10 8 5 3 2 1 </ FD_histogram >
      </ obj >
     <!--
    this is a comment
      -->

    下面是原创兄弟的链接,希望大家能尊重原创。

    http://blog.csdn.net/minutes_seconds/article/details/6531096

    展开全文
  • matlab读写xml

    千次阅读 2018-08-02 17:07:05
    xml文档的组织形式类似于树的结构,具体阐述在前一篇文章中有阐述 ... 那么在matlab环境下对xml文件进行读写,也就是本着按着节点一级一级访问的形式进行的 1.读xml 首先读入文件:  x...

        xml文档的组织形式类似于树的结构,具体阐述在前一篇文章中有阐述 https://blog.csdn.net/weixin_38907330/article/details/80763880

                  那么在matlab环境下对xml文件进行读写,也就是本着按着节点一级一级访问的形式进行的

    1.读xml

    首先读入文件:

                         xml=xmlread('1_2.xml','r');这时读入的xml为一个matlab自己定义的对象,并非结构体

    然后开始一级一级对.xml文档进行访问(下面插入的就是示例)

    % %<annotation> --------根节点
    % 		<folder>train_data/1</folder> ----图片路径
    % 		<filename>1_2.jpg</filename> ---文件名称
    % 		<size>                       ----尺寸信息
    % 			<img_width>680</img_width>
    % 			<img_height>571</img_height>
    % 			<img_depth>3</img_depth>
    % 		</size>
    % 		<object>                    -----目标
    % 			<name>1</name>
    % 			<difficult>0</difficult>
    % 			<bounding_box>
    % 				<x_left_top>75</x_left_top>
    % 				<y_left_top>395</y_left_top>
    % 				<width>164</width>
    %         		<height>175</height>
    % 			</bounding_box>
    % 		</object>
    % </annotation>

    访问xml有几个关键的操作:获取子节点的数目(getLength),该获取子节点(getChildNodes),访问节点内容(getTextContent),获取节点名称(getNodeName)(对子节点的访问是通过item来进行的)

                                                          Nodes=xml.getChildNodes;//xml就是我们之前读入的对象,这一步可以获取xml文档的根节点

                                                          RootNOdes=Nodes.item(0) ;//为什么是0呢?因为根节点就只有一个,所以根节点就是item(0)

    然后就是要根据xml文档的结构来一级一级的访问,首先访问RootNodes的子节点:

                                                        childnodes=RootNodes.item(0).getChildNodes;%解析出各个节点
                                                         nodenum=childnodes.getLength;//子节点的数目

    for i=0:nodenum-1  %遍历各个节点
        str=char(childnodes.item(i).getNodeName);
        if(strcmp(str,'folder'))
            disp(['folder:' ' ' char(childnodes.item(i).getTextContent)]);
        elseif(strcmp(str,'filename'))
            disp(['filename:' ' ' char(childnodes.item(i).getTextContent)]);
        elseif(strcmp(str,'size'))
            showsize(childnodes.item(i));
        elseif(strcmp(str,'object'))
            showobject(childnodes.item(i));
        else
        end
    end
    //因为size节点和object节点又包含子节点,所以我之后写了个函数,使其能继续访问该节点下面的子节点

    读取差不多就是这样啦,如果想要实例可以去这里下载:https://download.csdn.net/download/weixin_38907330/10579829

    (2018.10.30補充)

    xml讀取屬性:

           nodes.getAttributes.item(0)//如果有n个属性,那么item可以索引到n-1

     

    2. 写xml文档

    主要思路:

    • 先创建xml对象,同时初始化xml的根节点名称
    • 一级一级的添加节点
    • 最后使用xmlwrite将文件对象写入到文档

      docNode = com.mathworks.xml.XMLUtils.createDocument('annotation');  //创建一个根节点为annotation的xml文档

      docRootNode = docNode.getDocumentElement;%得到文件根节点

    需要掌握的几个基本操作,创建节点,向节点里面添加内容,添加节点到父节点

                   thisnode=   docNode.createElement('folder');//创建了一个名为folder的子节点

                   thisnode.appendChild(docNode.createTextNode(内容));//向thisnode里面添加内容

                    docRootNode.appendChild(thisnode);//添加到父节点

    对于如下局部结构:

    <size>
            <width>486</width>
            <height>500</height>
            <depth>3</depth>
        </size>

    其对应的代码为:

                 

                    thisnode=docNode.createElement('size');
                    node1=docNode.createElement('width');
                    node2=docNode.createElement('height');
                    node3=docNode.createElement('depth');
                    node1.appendChild(docNode.createTextNode(width));
                    node2.appendChild(docNode.createTextNode(height));
                    node3.appendChild(docNode.createTextNode(depth));
                    thisnode.appendChild(node1);
                    thisnode.appendChild(node2);
                    thisnode.appendChild(node3);

    好啦,基本上就是这样,其实思路明确了,几个基本操作了解,再复杂的xml文档也能读写自如

     

    PS:VOC格式标注中,x代表列,y代表行
           

     

     

     

    展开全文
  • Matlab 读取 XML文件

    千次阅读 2016-09-27 12:57:24
    Matlab 读取 XML文件网上已经有详细的介绍了,下来自己记录一下。Matlab读取XML有2种方式: 1. 一个parser之类的脚本读取; 2. 使用matlab专门的xml工具读取。我使用的是第二种方式;以下介绍第二种方式。 ...
  • Matlab 读写*.xml文件

    千次阅读 2018-04-11 19:18:44
    Matlab 读写*.xml文件1.摘要 因为经常使用将图像中的目标标注信息保存在*.xml文件中。在训练深度神经网络是常用这样的训练数据。有时候需要使用原有的数据来扩充数据,而最常用的工具也就是Matlab(这里示例使用的...
  • MATLAB读和写xml文件

    2012-08-04 14:37:12
    本文档中给出了XML文件MATLAB中的读写操作,其实很简单,简单易懂,希望对其他人员的快速编程有所帮助
  • matlab读取xml文件

    2014-05-15 13:42:00
    由于实验需求要用matlab读取保存在xml文件的人体关节点数据 以下是'bodyannotation.xml'一个样例的示例,共305个图片标定, 以下是我参照网上他人的方法的xml读取程序 clc; clear; xmlDoc = xmlread...
  • Matlab 7.0 中对xml的读写操作主要使用到 [toolbox\... Document Object Model的方法,实现对xml文件的操作。Matlab中的xml操作实际上采用了Java中的DOM的方法。 读XML: (MATLAB701安安装路径下)\toolbo
  • 利用matlabxml文件进行批量处理

    千次阅读 2016-11-22 21:02:50
    本文主要是要利用matlab编写一个M文件,这个M文件的主要功能:对一个文件夹下面的多个XML文件进行信息的提取,然后利用所要得到的信息进行计算,最后生成对应文件名的文本文件。 先上一下XML文件:  针对于这个XML...
  • matlab 修改xml文件的属性

    千次阅读 2016-06-15 14:04:32
    假设这是我们要修改的第一个xml文件,这里我们把的值 Unspecified 改成 值n02109961_1351的前9个字符n02109961 即 把Unspecified 改成n02109961 clc; clear; path = '/home/zc/py/data/VOCdevkit2007/VOC2
  • Matlab xml读写

    千次阅读 2016-06-15 14:53:30
    最近需要用matlab进行XML文件的读写,起初尝试用matlab自带的函数来做,但是发现不是很方便。后来找到了一个MATLAB的工具包,xml_io_tools,这个工具包以结构体的形式将XML读入内存,便于我们后续进一步的处理,值得...
  • Matlab 7.0 中对xml的读写操作主要使用到 ...使用XML Document Object Model的方法,实现对xml文件的操作。Matlab中的xml操作实际上采用了Java中的DOM的方法。   读XML:  (MATLAB701安安装路径下)\
  •  xmlFileName = [xmlname,'.xml'];  xmlwrite(xmlFileName,docNode);     end   end 这里用到的数据是人脸mark点的坐标数据,可以转成bndbox数据,如果想把有规律的标注数据转成labelimage工具标注的...
  • 为什么要写XML文件 最近头疼依然是在做数据集标记,因为原始LableImage工具生成的是XML文件,因为装不上这个工具,所以用Matlab标记了,需要将数据写进XML,和那个工具生成一样的格式。 从同事那里拿来工具生成的...
  • matlab中调用strcat()函数获得的是一个cell类型的 变量,而不是string类型。这是如果我们直接把这个cell类型的变量,传递到其他函数中作为string类型使用,就是出现问题,下面是一个例子: names={'fyc','hy','...
  • 其实CSDN上各位大佬的很全面,在这里博客一方面做个笔记,一方面提一下自己入的坑,避免各位再入,节省大家时间。 在这里记录一下我在安装过程中的参考资料: 百度一网友回答的: 民间教程 和 官网教程两个教程...
  • C++ 读写Matlab的mat文件的注意事项

    千次阅读 2013-12-25 18:35:31
    通过Max文件,我们可以用Matlab调用C的函数。有时候我们在进行数据处理的时候,...在OpenCV中,模型文件使用.xml存放的。  首先我们得配置VS工程,配置的方法请见http://blog.csdn.net/left_la/article/details/820
  • 做实验弄了一堆名字乱七八糟的图片,没有改名字直接用来标注导致xml文件名字也是乱七八糟,强迫症看着难受,用惯了matlab了个matlab修改的脚本。 我想把图片命名为0000X.jpg 五位数字序号,大家可根据自己需要...
  • Matlab中读取XML小记

    万次阅读 2009-08-20 21:04:00
    Matlab参考手册的,直接上代码了:function testXML(infilename) %简单的读写XML文件 try xDoc = xmlread(infilename); catch error(Failed to read XML file %s.,infilename); end allSchemeListItems = xD
  • matlab立体标定参数的mat格式xml格式,运行成功后,可在运行文件中找到这几个xml,如果要将R矩阵由3*1转换成3*3使用则需使用罗德里格斯变换
  • 题目:给出一组图片(图片上框有不同颜色的方框,同一颜色的方框可能有多个...③将输出的结果保存成xml类型(根节点、子节点、二级节点)的文件中,保存的文件名与读入的图片名相匹配。 ④出检验程序,检验输出的...
  • XML_toolbox_matlab

    2013-06-23 11:21:48
    matlab平台下的xml工具箱,轻松实现xml文件的读写操作,一个函数轻松搞定,还有帮助文档。
  • opencv保存Mat为xml并读入matlab

    千次阅读 2018-01-31 14:14:11
    工作中需要计算cv::Mat的各种投影,...Matlab读取xml文件——OpenCV通过FileStorage存储的矩阵Mat Opencv中的Mat文件在matlab打开  经过一番尝试,链接1的方法可成功将opencv的Mat写入xml中,然而matlab从xml读取数
  • Matlab自动完成文件for Notepad++

    千次阅读 2011-06-07 16:39:00
    Matlab自动完成文件for Notepad++Np++自带了Matlab的基本语法,但是没有自动完成的函数文件。于是了几行代码生成了一个。应该很全了,信息来源是从官方的函数列表。...
  • 然后转成自己需要的格式,数据转换的过程其实并没有太多的技术性的东西,主要涉及的就是文件的读写操作以及一点点逻辑,之前都会首选Matlab做这样的工作,但是开始接触python之后,尝试着用p...

空空如也

空空如也

1 2 3
收藏数 56
精华内容 22
关键字:

matlab写xml文件

matlab 订阅