php如何提取xml里面的CDATA的内容?
我用php的expat来解析xml的,但解析到CDATA时报错(即说<![CDATA[处),说是无效字符,不知为啥请大侠指点下。有点急!高分相送xml文件如下:<?xml...
我用php的expat来解析xml的,但解析到CDATA时 报错(即说 <![CDATA[ 处),说是无效字符,不知为啥
请大侠指点下。
有点急!高分相送
xml文件如下:
<?xml version="1.0" encoding="UTF-8" ?>
<Script>
<ID>25341</ID>
<BID></BID>
<ScriptFile>gentoo_GLSA-200705-20.nasl</ScriptFile>
<Version>1.1</Version>
<CVEID>CVE-2006-6731 CVE-2006-6736 CVE-2006-6737 CVE-2006-6745</CVEID>
<XRef>
<Name>GLSA</Name>
<Value>200705-20</Value>
</XRef>
<Name>
<![CDATA[
[GLSA-200705-20] Blackdown Java: Applet权限提升
]]>
</Name>
<Summary>
<![CDATA[
Blackdown Java: Applet权限提升
]]>
</Summary>
<Description>
<![CDATA[
远程主机存在在GLSA-200705-20中描述的漏洞。
影响:攻击者可以诱使用户运行特别构造的Java小应用程序或者应用程序,这可能使拥有运行JVM,访问数据保存在其他Java小应用程序,或者提升当前运行的Java小应用程序或者应用程序的权限考虑到未授权存取的用户可以读写或执行本地文件。
临时解决方案:目前没有临时解决方案。
参考:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-6731
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-6736
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-6737
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-6745
]]>
</Description>
<Risk>中</Risk>
<CVSS></CVSS>
<Solution>
<![CDATA[
由于现在从Blackdown没有修复升级包且这个漏洞只发生在小应用程序中,"nsplugin"USE标志在portage tree中被标记。
- emerge --sync
- emerge --ask --oneshot --verbose ">=dev-lang/php-4.4.7"
]]>
</Solution>
<Family>19</Family>
<Dependencies>
<ID>12634</ID><File>ssh_get_info.nasl</File>
</Dependencies>
<RequirePort>
<Name></Name>
<Value></Value>
</RequirePort>
</Script> 展开
请大侠指点下。
有点急!高分相送
xml文件如下:
<?xml version="1.0" encoding="UTF-8" ?>
<Script>
<ID>25341</ID>
<BID></BID>
<ScriptFile>gentoo_GLSA-200705-20.nasl</ScriptFile>
<Version>1.1</Version>
<CVEID>CVE-2006-6731 CVE-2006-6736 CVE-2006-6737 CVE-2006-6745</CVEID>
<XRef>
<Name>GLSA</Name>
<Value>200705-20</Value>
</XRef>
<Name>
<![CDATA[
[GLSA-200705-20] Blackdown Java: Applet权限提升
]]>
</Name>
<Summary>
<![CDATA[
Blackdown Java: Applet权限提升
]]>
</Summary>
<Description>
<![CDATA[
远程主机存在在GLSA-200705-20中描述的漏洞。
影响:攻击者可以诱使用户运行特别构造的Java小应用程序或者应用程序,这可能使拥有运行JVM,访问数据保存在其他Java小应用程序,或者提升当前运行的Java小应用程序或者应用程序的权限考虑到未授权存取的用户可以读写或执行本地文件。
临时解决方案:目前没有临时解决方案。
参考:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-6731
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-6736
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-6737
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-6745
]]>
</Description>
<Risk>中</Risk>
<CVSS></CVSS>
<Solution>
<![CDATA[
由于现在从Blackdown没有修复升级包且这个漏洞只发生在小应用程序中,"nsplugin"USE标志在portage tree中被标记。
- emerge --sync
- emerge --ask --oneshot --verbose ">=dev-lang/php-4.4.7"
]]>
</Solution>
<Family>19</Family>
<Dependencies>
<ID>12634</ID><File>ssh_get_info.nasl</File>
</Dependencies>
<RequirePort>
<Name></Name>
<Value></Value>
</RequirePort>
</Script> 展开
展开全部
$dom=new DOMDocument;
$dom->loadXML($mapabcXML);
$s=simplexml_import_dom($dom);
for($i=0;$i<$datalen;$i++){ if(!empty($s->poi[$i]->x)||!empty($s->poi[$i]->y)){
}
}
首先把你的这个xml当一个字符串,进行一次替换,把<?xml version="1.0" encoding="UTF-8" ?>
替换为空,只留下其它标签。然后就可以通过loadXML载入成一个dom对象了,然后你调用属性吧。记住用loadXML较简单。
$dom->loadXML($mapabcXML);
$s=simplexml_import_dom($dom);
for($i=0;$i<$datalen;$i++){ if(!empty($s->poi[$i]->x)||!empty($s->poi[$i]->y)){
}
}
首先把你的这个xml当一个字符串,进行一次替换,把<?xml version="1.0" encoding="UTF-8" ?>
替换为空,只留下其它标签。然后就可以通过loadXML载入成一个dom对象了,然后你调用属性吧。记住用loadXML较简单。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
并不是CDATE有问题, 而是遇到不认识的非法utf8编码了
头文件是encoding="UTF-8" 但是字符又是GBK的。
把第一行改成<?xml version="1.0" encoding="GBK" ?>就好了
头文件是encoding="UTF-8" 但是字符又是GBK的。
把第一行改成<?xml version="1.0" encoding="GBK" ?>就好了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以尝试用simpleXml 来解析这个文件,那个比EXpat要简单的多。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询