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