xerces-c: анализ DOM xml - PullRequest
       8

xerces-c: анализ DOM xml

2 голосов
/ 28 декабря 2010

У меня есть вопрос о разборе 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 ()).У меня вопрос: к чему относятся эти # текст и почему они периодически появляются в циклах?

Спасибо!

1 Ответ

3 голосов
/ 28 декабря 2010

Эти #text узлы в вашем примере ссылаются на пробелы между тегами. Например здесь

<root xmlns="http://www.test.com">
   <ApplicationSettings>

есть перевод строки и четыре пробела между ...com"> и <App....

Вы можете попытаться проанализировать следующее, чтобы увидеть, что происходит:

<?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>
...