1. 程式人生 > >Matlab讀寫xml檔案

Matlab讀寫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

相關推薦

Matlabxml檔案

xml檔案以文件物件模型表示,簡稱DOM(Document Object Model)。在Matlab中,使用xmlread讀取xml檔案成DOM節點,對xml檔案的操作轉化成對DOM節點的操作,使用xmlwrite把DOM節點寫入到xml檔案中。 Matla

Java:使用DOM4j來實現XML檔案中的屬性和元素

DOM4可以讀取和新增XML檔案的屬性或者元素 讀取屬性: public static void ReadAttributes() throws DocumentException { File file = new File("D:\\cmz\\java\\XMLTest\\Custom

Java:簡單的XML檔案之使用DOM4J

Dom4J方式解析XML檔案。dom4j是非官方提供的xml檔案解析方式,因此需要去第三方下載dom4j的jar包 File file = new File("D:\\chengmuzhe\\java\\JavaOOP6.0\\students.xml"); SAXReader reader = n

C++XML檔案(libxml2庫)

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

C++XML檔案(使用tinyxml庫)

使用以下程式碼之前,需要下載TinyXml庫,幷包含到工程下 #include <stdio.h> #include "tinyxml.h" #include <iostream> #include <cstring> usin

PythonXML檔案

什麼是XML XML是可擴充套件標記語言(Extensible Markup Language)的縮寫,其中標記是關鍵部分。使用者可以建立內容,然後使用限定標記標記它,從而使每個單詞、短語或塊成為可識別、可分類的資訊。 標記語言從早起的私有公司和政府制定形式逐

PHPXML檔案的四種方法

  PHP對XML檔案進行讀寫操作的方法一共有四種,分別是:字串方式直接讀寫、DOMDocument讀寫、XMLWrite寫和XMLReader讀、SimpleXML讀寫,本文將依次對這四種方法進行介紹。   介紹之前首先對本文例子使用的資料和檔案進行說明。本文寫XML檔案

android 中xml檔案時取得路徑的方法/data/sdcard/src

  package com.eboy.readwritexml; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream;

tinyxml2XML檔案的例程

例程很簡單,因此就不再囉嗦了,直接上程式碼。 test.xml內容: <?xml version="1.0"?> <scene name="Depth"> <surface id="A001" type="Camera"> <

C# XML檔案的方法詳細總結

XmlDocument類的屬性 屬性 說明 Attributes 當前節點的屬性集合 BaseURI 當前節點的基URI ChildNodes 節點的所有子節點 Doc

Matlab yuv檔案

clear all; clc; fid = fopen('Data/Testing/down.yuv','r'); %讀入檔案 fod = fopen('Data/Testing/test.yuv',

MFCXML檔案

檔案頂部加入 #import "msxml3.dll"; usingnamespace MSXML2; //這兩句作用是,在程式的資料夾下生成MSXML3.TLH和MSXML3.TLI兩個檔案; ---------------------------------------------------------

一次程式碼重構之旅-快速xml檔案工具類封裝

   為了滿足系統的靈活性,有些功能經常需要用到配置檔案,一般是xml格式的居多.如何能快速讀寫配置檔案呢?    以前都是用dom4j提供的api來讀寫xml檔案,用dom4j讀寫配置檔案總感覺像是在結構化的處理問題,能不能直接把xml檔案和JavaBean之間相互轉換呢

Qt:QXMLStreamReader、QXMLStreamWriter,XML檔案例項

效果圖: 需求: 開啟對應格式的XML檔案,讀入到QTreewidget樹中,並能將XML檔案另存為,寫入到磁碟。 原始碼: main.cpp #include "mainwindow.h" #include <QApplication> int

cocos2dxxml檔案

首先包含標頭檔案 #include "tinyxml2/tinyxml2.h" usingnamespace tinyxml2; //data.xml檔案內容 <Chapters> <Chapter> <Name>Misty Va

matlabtxt檔案中的資料並畫圖

  oclusion: 3D(Base frame): [ c2 c3 c4 ] = textread('zd3(x).txt',' %f  %f  %f ',102) ; plot3(c2,c3,c4,':.b'); axis([min(c2),max(c2),min(c

使用jdomxml檔案

 JDOM是一種適合Java程式設計師來使用的Java XML解析器,而dom,dom4j適用於不同的語言. 程式碼如下: process.xml <?xml version="1.0" encoding="UTF-8"?><Process> <

C++通過TinyXML類庫XML檔案

TinyXML是一個開源的解析XML的解析庫,能夠用於C++,能夠在Windows或Linux中編譯。這個解析庫的模型通過解析XML檔案,然後在記憶體中生成DOM模型,從而讓我們很方便的遍歷這棵XML樹。DOM模型即文件物件模型,是將整個文件分成多個元素(如書、章、節、段等)

qtxml檔案

1、DOM方式 寫xml檔案,以QDomText方式寫,程式碼如下 QFile file("d:/test.txt"); file.open(QIODevice::WriteOnly); QDomDocument doc; QDomProcessingInstructio

dom4jxml檔案以及遇到的亂碼解決辦法

這是碰到亂碼問題之後再csdn上看到的: xml亂碼的問題在於編碼集的衝突。   /*//document物件在記憶體中是以"UTF-8"編碼形式存在,用FileWriter將document物件以字元流的形式寫入xml文件預設是用本地碼錶"gb2312"編碼    * 亂