Xml

matlab読み取りおよび書き込みxml



Matlab Read Write Xml



ツリーの構造に類似した組織xmlドキュメントであり、前の記事で具体的に取り上げられています。 https://blog.csdn.net/weixin_38907330/article/details/80763880

したがって、MATLAB環境でxmlファイルを読み書きします。これは、アクセスノードのレベルを押すことでフォームに一致します。



1.xmlを読み取ります

最初にファイルを読み取ります。



xml = xmlread( '1_2.xml'、 'r')matlab xmlオブジェクト自体を読み取る時間は、構造ではなく定義されています

次に、1ペアの.xmlドキュメントアクセスを開始しました(以下を挿入して例を示します)

%% -------- root % train_data / 1 ---- image path % 1_2.jpg --- file name % ---- size information % 680 % 571 % 3 % % ----- goals % 1 % 0 % % 75 % 395 % 164 % 175 % % %

いくつかの主要なxmlアクセス操作があります。番号(getLength)取得サブノードの子ノードの取得(getChildNodes)、アクセスノードのコンテンツ(getTextContent)、アクセスノード名の取得(getNodeName)(子ノードは次の項目によって実行されます) )



Nodes = xml.getChildNodes // xmlは前にオブジェクトで読み取ったものであり、このステップでルートxmlドキュメントを取得できます

RootNOdes = Nodes.item(0)// 0なぜですか?ルートは1つしかないため、ルートノードはアイテム(0)です。

次に、構造xmlドキュメントのレベルにアクセスします。まず、子ノードRootNodesにアクセスします。

childnodes = RootNodes.item(0).getChildNodes%は各ノードを解析します
//子ノードの数nodenum = childnodes.getLength

for i = 0: nodenum-1% traversing each node 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 // Because the size and object nodes and node contains child nodes, so after I wrote a function, so that it can continue to access child nodes below the node

これはほとんど読まれています。例が必要な場合は、ここからダウンロードできます。 https://download.csdn.net/download/weixin_38907330/10579829

2.xmlドキュメントを作成します

本旨:

  • ルート名xmlの初期化中にxmlオブジェクトを作成します
  • ノードのレベルを追加する
  • 最後に使用されたXmlwriteファイルオブジェクトがドキュメントに書き込まれます

docNode = com.mathworks.xml.XMLUtils.createDocument( 'annotation')// xmlドキュメントアノテーションのルートノードを作成します

docRootNode = docNode.getDocumentElement%取得したルートファイル

ノードを作成するには、いくつかの基本的な操作をマスターする必要があります。ノードは内部のコンテンツに追加され、親ノードにノードが追加されます。

thisnode = docNode.createElement( 'folder')//という名前のフォルダーの子ノードを作成します

thisnode.appendChild(docNode.createTextNode(content))//内部のthisnodeにコンテンツを追加します

docRootNode.appendChild(thisnode)//親ノードに追加します

以下について 部分的 構造:


486
500
3

対応するコード:

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は