php dom不能引入xml文件的问题

我刚才遇到一个phpdom对象不能导入xml文件的问题,两个文件是放在同一个目录下的classes.xml<?xmlversion="1.0"encoding="utf-... 我刚才遇到一个phpdom对象不能导入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(财富值+成长值)
ys5955092
推荐于2016-05-22 · TA获得超过671个赞
知道小有建树答主
回答量:551
采纳率:100%
帮助的人:573万
展开全部

你的obj是中文,一定要注意,xml文件保存成utf-8。你的dom写法我没再测试,现在好久都不用这种方式了,太麻烦。用这两种吧:abc.xml

  1. getxmldata 是把simplexml转成了对象,

  2. 直接用了simplexml

  3. 其实可以用正则表达式,这里不在写了

<?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 '';
        }
    }

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式