Я пытаюсь сделать XML парсинг в MATLAB, который использует JavaSE пакет org.w3c.domgetChildNodes() возвращает текст вместо NodeList
У меня есть 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 элемента фильтра с именем = "на те2"
Я пытаюсь сделать следующий
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.
Не могли бы вы мне помочь? Что я делаю неправильно?
Благодарим за помощь.
спасибо. Но так или иначе, не должен .getChildNodes() вернуть мне список узлов? И как я могу получить список элементов без указания имени тега? – Physman
Еще раз спасибо. Я понял, что вы имеете в виду. Несмотря на ** фильтры ** не NodeList, я могу использовать .item (...) нормально. Я просто должен проверить полученный тип ** фильтра ** узла. – Physman
Я думаю, что вы можете ошибиться в использовании «узла» и «элемента», как если бы они были одним и тем же. –