+ -
当前位置:首页 → 问答吧 → 谁能帮我解释一下这个将XML转为数组的函数

谁能帮我解释一下这个将XML转为数组的函数

时间:2010-09-16

来源:互联网

ASP代码,下面这个代码是将接受到的XML转为数组。

'函数名: loadxml
'作 用: xml数据转成数组
'参 数: code : xml数据源
'返回值: 数组

Function loadxml(code)
  Dim xml, objNodem, i, objNode, nCntChd
  Set xml = Server.CreateObject("Microsoft.XMLDOM")
  xml.async = False
  xml.loadxml code
If xml.parseError.errorCode <> 0 Then
  loadxml = Split("-99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0",",")
Exit Function
End If
  Set objNode = xml.documentElement 
  nCntChd = objNode.ChildNodes.length - 1 
  For i = 0 To nCntChd 
  loadxml = loadxml & urldecode(xml.documentElement.childNodes(i).text) & ","
  Next
  loadxml = Left(loadxml,Len(loadxml)-1)
  Set xml = Nothing
loadxml = Split(loadxml,",")
End Function

问题如下,如果返回的数组中有中文,那么则显示-99,0,0,……,如果是英文加数字就不会,怀疑是编码问题,这是返回XML返回的代码,是PHP代码,我将里面的encoding=\"GB2312\换成UFT等编码,均无用

function xml_serialize($arr, $htmlon = FALSE, $isnormal = FALSE, $level = 1) {
$s = $level == 1 ? "<?xml version=\"1.0\" encoding=\"GB2312\"?>\r\n<root>\r\n" : '';
$space = str_repeat("\t", $level);
foreach($arr as $k => $v) {
if(!is_array($v)) {
$s .= $space."<item id=\"$k\">".($htmlon ? '<![CDATA[' : '').$v.($htmlon ? ']]>' : '')."</item>\r\n";
} else {
$s .= $space."<item id=\"$k\">\r\n".xml_serialize($v, $htmlon, $isnormal, $level + 1).$space."</item>\r\n";
}
}
$s = preg_replace("/([\x01-\x09\x0b-\x0c\x0e-\x1f])+/", ' ', $s);
return $level == 1 ? $s."</root>" : $s;
}

作者: voolezhang2   发布时间: 2010-09-16

看一下PHP返回时的头信息,是否和编码设置一致。

作者: icy_csdn   发布时间: 2010-09-16