当时在网上找了一个CDATA的转换器, 修改之后, 将CDATA标签给过滤掉。如下
// 状态:
//
// 'out'
// ' // ' // '& LT; !['
// ' // ' // ' // ' // 'in'
// ']'
// ']]'
//
//(是的,状态 a 由字符串表示。)
//
$state = 'out';
$a = str_split($xml);
$new_xml = '';
foreach ($a AS $k => $v) {
// 处理“state”。
switch ( $state ) {
case 'out':
if ( ' $州 = $ v;
} else {
$new_xml .= $v;
}
中断;
case ' if ( '!' == $v ) {
$state = $state 。 $v;
} else {
$new_xml .= $state . $v;
$state = 'out';
}
Break;
case ' if ( '[' == $v ) {
$状态 = $状态 . $v;
} else {
$new_xml .= $state . $v;
$state = 'out';
}
中断;
case ' if ( 'C' == $v ) {
$状态 = $状态 . $v;
} else {
$new_xml .= $state . $v;
$state = 'out';
}
中断;
case ' if ( 'D' == $v ) {
$state = $state . $v;
} else {
$new_xml .= $state . $v;
$state = 'out';
}
中断;
case ' if ( 'A' == $v ) {
$state = $state . $v;
} else {
$new_xml .= $state . $v;
$state = 'out';
}
中断;
case ' if ( 'T' == $v ) {
$state = $state . $v;
} else {
$new_xml .= $state . $v;
$state = 'out';
}
中断;
case ' if ( 'A' == $v ) {
$州 = $州 . $v;
} else {
$new_xml .= $state . $v;
$state = 'out';
}
break;
case ' if ( '[' == $v ) {
$cdata = '';
$state = 'in';
} else {
$new_xml .= $state 。 $v;
$state = 'out';
}
中断;
case 'in':
if ( ']' == $v ) {
$state = $v;
} else {
$cdata .= $v;
}
中断;
case ']':
if ( ']' == $v ) {
$state = $state 。 $v;
} else {
$cdata .= $state . $v;
$state = 'in';
}
break;
case']]':
if('>'== $ v){ $ new_xml。= htmlentities($ cdata);
##$ new_xml。= = = = = = = $cdata;
// $new_xml .= str_replace('>','>',
// str_replace('>',' // str_replace('" ','"',
// str_replace('&','&',
// $cdata))));
$state = 'out';
} else {
$cdata .= $state 。 $v;
$state = 'in';
}
中断;
} // switch
}
//
// 返回。
//
return $new_xml;
最近发现,总是有alert发出来,说是simplexml解析错误。
发现原来有xml的数据是。 出现了连续的 3 个],导致上面的解析函数无法处理。
而且这个问题很难修改,你不知道接下来会不会有 4, 5 个]出现。
所以决定还是将 beresolv 的代码换成 DOM XML,本身 DOM 的处理还是比较简单的,
包含 DOMElement, DOMDocument, DOMNodeList, DOMNode 几个组件。
对于DOMNode有nodeValue,nodeType,nodeName的成员函数。
首先先用loadXML将string转化为DOMDocument对像,再用getElementsByTagName转化为DOMNodeList对像,再使用-> item(0)转化为DOMNOde,然后就可以使用上面的透明度方法了。
对于
test这种xml标签,要使用属性函数。