MATLAB Answers

Translated by

このページのコンテンツは英語から自動翻訳されています。自動翻訳をオフにする場合は「<a class="turn_off_mt" href="#">ここ</a>」をクリックしてください。

Moritz
0

How to change a value in a XML-File?

Moritz
さんによって質問されました 2013 年 10 月 2 日
最新アクティビティ Alessandro さんによって コメントされました 2013 年 10 月 2 日
Hello,
i have this XML-code
<busStop id="BusStop0" lane="1to2_0" startPos="20" endPos="30"/>
<busStop id="BusStop1" lane="1to2_0" startPos="70" endPos="80"/>
<chargingStation id="ChrgStn1" lane="1to2_0" startPos="20" endPos="30" chrgPower="220"/>
I want to change the value in "chargingStation" for "startPos" and for "endPos".
How do i write in MatLab?
Thanks!!!

  0 件のコメント

サインイン to comment.

1 件の回答

回答者: Alessandro 2013 年 10 月 2 日
編集済み: Alessandro 2013 年 10 月 2 日

If I understand you right and you use the java node structure for matlab than you could use this function to replace the node:
%Function to replace a w3c node
function xmlreplacenode(node1,nodenew)
parent = node1.getParentNode;
node1.getParentNode.removeChild(xmlnode);%Delete the node
parent.appendChild(nodenew);
If not you should first parse the document with:
xDoc = xmlread(handles.tmpverzeichn);
You still need a function to generate a new node from a string maybe. For that you can try this:
%input doc is java org.w3c.dom Document
%str is a xml string
function node = parsestr2node(doc,str)
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.w3c.dom.Node;
import java.io.*;
inStream = org.xml.sax.InputSource();
inStream.setCharacterStream(java.io.StringReader(str));
docBuilderFactory = DocumentBuilderFactory.newInstance();
docBuilder = docBuilderFactory.newDocumentBuilder();
tmpdoc = docBuilder.parse (inStream);
node = doc.importNode(tmpdoc.getChildNodes.item(0),true);
If it doesn t work maybe you need some java files

  2 件のコメント

Moritz
2013 年 10 月 2 日
Can it be easier?
The XML does already exist! I just want to change the value!?
Can i do it with xmlread or xmlwrite?
Thanks!!
Alessandro 2013 年 10 月 2 日
Ok sorry I thought you wannt to change the node. That it is much more simplier:
Doc.getElementsByTagName('chargingStation').item(0).setAttribute('startPos','55') Doc.getElementsByTagName('chargingStation').item(0).setAttribute('endPos','75')

サインイン to comment.



Translated by