У меня вопрос о разборе XML. Я экспериментировал с образцовой программой и немного изменил ее, чтобы попытаться понять, как работает парсинг, я столкнулся с выходом, который я не совсем понимаю, и надеюсь, что некоторые из вас могут пролить свет на то, что может происходить.xerces-c: DOM xml разбор
Это мой XML-файл:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<root xmlns="http://www.test.com">
<ApplicationSettings>
<option_a>"10"</option_a>
<option_b>"24"</option_b>
</ApplicationSettings>
</root>
Я вставил отладочные по всей моей программе, чтобы попытаться понять, что происходит, когда функция вызывает такую как getChildNodes() процессы, как это называется. Это выход я получил:
Parsing xml file...
Processing Root...
Processing children with getChildNodes()...
>>>>>>>>>>> Loop child 0: Node name is: #text
>>>>>>>>>>> Loop child 1: Node name is: ApplicationSettings
= ApplicationSettings processing children with getChildNodes()...
***** iter 0 child name is #text
***** iter 1 child name is option_a
***** iter 2 child name is #text
***** iter 3 child name is option_b
***** iter 4 child name is #text
>>>>>>>>>>> Loop: 2 Node name is: #text
С выхода, я могу легко сделать вывод, что правильно разобран мой файл XML. Тем не менее, я заметил, что программа также обнаружила дополнительные узлы с именем #text (распечатано с использованием функции getNodeName()). Мой вопрос в том, что относятся к ним и почему они появляются периодически во всех циклах?
Спасибо!
Интересно. У меня было такое чувство, что оно каким-то образом касалось пробелов. Вы знаете, есть ли способ избежать добавления этих пробелов в качестве дочерних узлов, чтобы я мог избежать дополнительных накладных расходов при циклировании? Разбирает единственное решение? – user459811
@ user459811 Я не знаком с ксерами, извините. Вы должны обратиться к документации, чтобы найти что-то вроде «игнорировать пробелы». – khachik
Спасибо, Хачик. Я прибегал к использованию if-conditional для игнорирования пробела, если кому-то интересно: if ((currentNode-> getNodeType() == DOMNode :: TEXT_NODE) || (currentNode-> getNodeType() == DOMNode :: COMMENT_NODE)) { Продолжать; } – user459811