簡體   English   中英

getChildNodes() 返回 Text 而不是 NodeList

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM