我使用 libxml2 来解析我的XML配置文件。最新的功能请求涉及“正确处理有意义的空白”,例如应该保留换行符。
目前,我使用xmlGetProp获取属性值。
我知道XML解析器通常会对空格进行规范化 - 正如标准所要求的那样(用空格char替换所有空格,融合多个空格字符,去掉前导和尾随空格字符)。
我想知道是否有一种方法可以确保保留属性中的嵌入换行符。
答案 0 :(得分:0)
正如您所知,这是XML规范所要求的,因此DTD或Schema无法停止规范化。
你可以使用libxml的html解析器,使用命令行xmllint实用程序,输入文件为
<a>
<b x="1
2
3"/>
</a>
我得到了
$ xmllint abc.xml
<?xml version="1.0"?>
<a>
<b x="1 2 3"/>
</a>
所以新行已经消失了,但是:
$ xmllint --html abc.xml
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><a>
<b x="1
2
3"></b>
</a></body></html>
保留了新行(虚假推断的html和正文已添加,但在应用程序中解析后可能会丢失它们。)
答案 1 :(得分:0)