0
我試圖做在MATLAB XML解析,它使用的JavaSE org.w3c.dom包getChildNodes()返回文本,而不是節點列表
我有一個XML結構像
<?xml version="1.0" encoding="utf-8"?>
<tada>
<Filters>
<filter id="1" name="name1" renderType="type1">
<bool name="par1" value="false"/>
<bool name="par2" value="false"/>
<int name="par3" value="200"/>
<int name="par4" value="1"/>
<float name="par5" value="2"/>
<bool name="par6" value="false"/>
<int name="par7" value="1"/>
</filter>
<filter id="6" name="name2" renderType="type2">
<bool name="par1" value="false"/>
<bool name="par2" value="false"/>
<int name="par3" value="200"/>
<int name="par4" value="1"/>
<float name="par5" value="2"/>
<bool name="par6" value="false"/>
<int name="par7" value="1"/>
<int name="par8" value="1"/>
<array name="par9" row="2" col="2" >
5.0162 0.96182
0.22294 0.96356
</array>
</filter>
</Filters>
</tada>
我試圖獲得訪問權限,讓說屬性renderType元素過濾的與NAME =「吶ME2"
我嘗試做以下
config = xmlread(xmlFileName);
section = config.getDocumentElement().getElementsByTagName('Filters').item(0);
filters = section.getChildNodes();
// filters = section.getElementsByTagName('filter');
for i = 0:filters.getLength()-1
filter = filters.item(i);
if strcmp(filter.getAttribute('name'), 'name2')
filter.setAttribute('renderType', 'graph2D');
end
end
我希望過濾器應該是一個節點列表(如文檔說http://docs.oracle.com/javase/6/docs/api/org/w3c/dom/package-summary.html?browser=F1help),但它返回作爲文本(僅包含空格)。
如果我寫
filters = section.getElementsByTagName('filter');
然後我得到想要的節點列表,但問題是,這種方式是不合適的。因爲我需要通過值選擇節點名稱屬性。
你能幫我嗎?我做錯了什麼?
謝謝你的幫助。
謝謝。但無論如何,不應該.getChildNodes()返回一些節點列表?我怎樣才能得到元素列表,而不指定標籤名稱? – Physman
再次感謝你。我明白你的意思。儘管**過濾器**不是NodeList,我可以正常使用.item(...)。我只是應該檢查**過濾器**節點的結果類型。 – Physman
我想你可能會犯錯誤,使用「節點」和「元素」,就好像它們是一樣的東西。 –