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は