2

我有一个关于 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() 函数打印出来)。我的问题是,这些#text指的是什么,为什么它们会在整个循环中定期出现?

谢谢!

4

1 回答 1

3

您示例中的那些#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>
于 2010-12-28T17:00:18.763 回答