[英]Modify an XML file with XPath in MATLAB
我正在嘗試使用XPath在MATLAB中打開和修改XML文件。 這是我到目前為止編寫的代碼:
import javax.xml.xpath.*
doc = xmlread(which('myXMLfile.xml'));
factory = XPathFactory.newInstance();
xpath = factory.newXPath();
expr = xpath.compile('/data//parameter[@name=''MYPARAMETER'']/double');
nodeList = expr.evaluate(doc,XPathConstants.NODESET);
disp(char(nodeList.item(0).getFirstChild.getNodeValue))
nodeList.item(0).setNodeValue('0.03')
還有我的XML文件:
<data>
...
<parameter name="MYPARAMETER">
<double>0.05</double>
</parameter>
...
disp
行正確地在MATLAB命令窗口中顯示該值,這里是0.05
。
該腳本不會引發錯誤。 但是,未在XML文件中設置0.03
值。 我在做什么錯,為什么不能使用setNodeValue
命令將該值寫入文件?
編輯
如建議的那樣,可能不會保存它,因為它只是在內存中進行了修改。 我在代碼中添加了以下幾行:
factory = javax.xml.transform.TransformerFactory.newInstance();
transformer = factory.newTransformer();
writer = java.io.StringWriter();
result = javax.xml.transform.stream.StreamResult(writer);
source = javax.xml.transform.dom.DOMSource(doc);
transformer.transform(source, result);
我沒有收到任何錯誤,但是XML文件仍然沒有被修改。
編輯2
import javax.xml.xpath.*
import javax.xml.transform.*
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;
doc = xmlread(which('ImagingSensor.vpar'));
factory = XPathFactory.newInstance();
xpath = factory.newXPath();
expr = xpath.compile('/data//parameter[@name=''FOV'']/double');
nodeList = expr.evaluate(doc,XPathConstants.NODESET);
disp(char(nodeList.item(0).getFirstChild.getNodeValue))
nodeList.item(0).getFirstChild.setNodeValue('0.03')
使用nodeList.item(0).getFirstChild.setNodeValue('0.03')
可以正確更改值(但仍未保存到文件中)。
使用nodeList.item(0).setNodeValue('0.03')
,它沒有正確更改值。
似乎您只在修改內存中的XML文檔對象。 最后嘗試將對象保存回XML文件。 可能是這樣的:
Transformer transformer = TransformerFactory.newInstance().newTransformer();
Result output = new StreamResult(new File("myXMLfile.xml"));
Source input = new DOMSource(myDocument);
transformer.transform(input, output);
*)我不是Java人士,還是摘自該線程的摘錄: 如何將經過解析和更改的DOM文檔保存在xml文件中?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.