[英]getChildNodes() returns Text instead of NodeList
我正在嘗試在使用 JavaSE 包 org.w3c.dom 的 MATLAB 中進行 XML 解析
我有一個像這樣的 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>
我正在嘗試訪問,比如name="name2"元素過濾器的屬性renderType
我正在嘗試執行以下操作
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
我希望過濾器應該是一個NodeList (如文檔所述http://docs.oracle.com/javase/6/docs/api/org/w3c/dom/package-summary.html?browser=F1help ),但它返回作為文本(僅包含空格)。
如果我寫
filters = section.getElementsByTagName('filter');
然后我得到了想要的NodeList ,但問題是這種方式不合適。 因為我需要通過name屬性的值來選擇節點。
你可以幫幫我嗎? 我做錯了什么?
感謝您的幫助。
您的 XML 文檔在元素之間包含空格。 XML 解析器認為這很重要,當您使用 DOM 方法 getChildNodes() 時,它包括子元素和包含空格的子文本節點。 在處理子節點時,如果您想忽略空白文本節點,您必須明確這樣做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.