我有一个非常简单的PowerBuilder代码:
OLEObject lole_DOM lole_DOM = CREATE OLEObject lole_DOM.ConnectToNewObject("MSXML2.DOMDocument.4.0") lole_DOM.LoadXML('<?xml version="1.0" encoding="UTF-8"?><root/>') MessageBox("", String(lole_DOM.XML)) DESTROY lole_DOM
我得到的结果是:
<?xml version="1.0"?> <root/>
编码属性去了哪里?不知道该怪谁,PowerBuilder还是MSXML2.DOMDocument.4.0,有什么想法吗?
使用PowerBuilder版本11.5.1 Build 5097
这是故意的。如 documentation for the xml property :
xml
这个 xml格式 属性始终返回Unicode字符串。也就是说 xml格式 的属性 DOMDocument 将文档从原始编码转换为Unicode。结果,原始编码属性被删除。例如 <?xml version="1.0" encoding="UTF-8"?> 出现在 xml格式 属性如下。 <?xml version="1.0"?>
这个 xml格式 属性始终返回Unicode字符串。也就是说 xml格式 的属性 DOMDocument 将文档从原始编码转换为Unicode。结果,原始编码属性被删除。例如 <?xml version="1.0" encoding="UTF-8"?> 出现在 xml格式 属性如下。
xml格式
DOMDocument
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0"?>
相反,如果将文档保存到文件中 save() 您将看到文件中的处理指令已完成,文件也相应地进行了编码。
save()