我有一些代码在xml文件中读取作为计算机模型的输入(用C ++编写并使用VS2012编译)。在对某些输入数据的XML格式进行更新后,软件以新的格式停止读取文件(代码已经更改以适应新的数据格式),经过调查后很明显,这是因为新的数据格式包括XML文件中的注释,xml解析器(msxml6)将其视为子节点。因此,它读取的第一个子节点无法理解,软件按设计退出。
虽然我们现在已经解决了这个问题(通过从XML文件中删除非严格必要的注释)但我想知道是否有人知道为什么解析器认为注释是子节点?我的印象是解析器会忽略评论吗?
答案 0 :(得分:2)
在XML的大多数树模型(例如,DOM)中,注释确实是包含元素的子节点,并且由应用程序决定在读取树时是否跳过它们。
忘记这一点是一个常见的错误,并且想象当您在没有评论的源文档上测试您的应用程序时,如果发件人选择包含评论,它将继续有效。
在将文档传递给应用程序之前从文档中删除注释是解决问题的一种方法(它是一种非常简单的XSLT转换)但是如果编写应用程序以便首先处理注释会更好。