php dom不能引入xml文件的问题
classes.xml
<?xml version="1.0" encoding="utf-8"?>
<班级>
<学生>
<名字>周星驰</名字>
<年龄>43</年龄>
<介绍>学习刻苦</介绍>
</学生>
<学生>
<名字>林青霞</名字>
<年龄>32</年龄>
<介绍>是一个好学生</介绍>
</学生>
</班级>
phpdom1.php
<html>
<?php
//1. 创建DOMDocument 对象,代码就是xml文档
$xmldoc=new DOMDocument();
//2.加载xml(指定你要对哪个xml文件进行解析)
$xmldoc->load("classes.xml");
//tip:如果你希望知道$xmldoc有哪些方法或者属性可以使用,可以同var_dump();
var_dump($xmldoc);
//3. 希望获取第一个学生的名字 返回列表
$stus=$xmldoc->getElementsByTagName("学生");
echo "共有".$stus->length;
?>
</html>
在浏览器输出的结果是:
object(DOMDocument)#1 (0) { } 共有0共有0
请问是哪里出错了?是不是要安装什么类,或者ini文件要开启某些扩展吗? 展开
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏5(财富值+成长值)
你的obj是中文,一定要注意,xml文件保存成utf-8。你的dom写法我没再测试,现在好久都不用这种方式了,太麻烦。用这两种吧:abc.xml
getxmldata 是把simplexml转成了对象,
直接用了simplexml
其实可以用正则表达式,这里不在写了
<?php
@header("Content-Type: text/html; charset=utf-8");
$str =file_get_contents('abc.xml');
$arr_xml =getXmlData ($str);
var_export($arr_xml);
echo '<hr/>';
$ar =simplexml_load_string($str);
var_export($ar);
exit;
//对象转数组
function get_object_vars_final ($obj)
{
if (is_object($obj)) {
$obj = get_object_vars($obj);
}
if (is_array($obj)) {
foreach ($obj as $key => $value) {
$obj[$key] = get_object_vars_final($value);
}
}
return $obj;
}
//解析xml函数
function getXmlData ($strXml) {
$pos = strpos($strXml, 'xml');
if ($pos) {
$xmlCode=simplexml_load_string($strXml,'SimpleXMLElement', LIBXML_NOCDATA);
$arrayCode=get_object_vars_final($xmlCode);
return $arrayCode ;
} else {
return '';
}
}