小妹又遇到取XML子节点问题。请帮忙给看看1 可能没有开启这个xml的dll,getElementsByTagName或者是这个函数书写错误了! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Call to undefined method DOMNodeList::getElementsByTagName() undefined [简明英汉词典][5Qndi5faind]adj.不明确的, 未下定义的method [简明英汉词典][5meWEd]n.方法其实怎么不用php自己带的xml parser呢。 例以下是 PHP 脚本解析 XML 文档的一些范例。 XML 元素结构范例第一个范例用缩进格式显示一个文档中起始元素的结构。 例子 1. 显示 XML 元素结构<?php$file = "data.xml";$depth = array();function startElement($parser, $name, $attrs) { global $depth; for ($i = 0; $i < $depth[$parser]; $i++) { print " "; } print "$name\n"; $depth[$parser]++;}function endElement($parser, $name) { global $depth; $depth[$parser]--;}$xml_parser = xml_parser_create();xml_set_element_handler($xml_parser, "startElement", "endElement");if (!($fp = fopen($file, "r"))) { die("could not open XML input");}while ($data = fread($fp, 4096)) { if (!xml_parse($xml_parser, $data, feof($fp))) { die(sprintf("XML error: %s at line %d", xml_error_string(xml_get_error_code($xml_parser)), xml_get_current_line_number($xml_parser))); }}xml_parser_free($xml_parser);?> 目录utf8_decode -- 将用 UTF-8 方式编码的 ISO-8859-1 字符串转换成单字节的 ISO-8859-1 字符串。 utf8_encode -- 将 ISO-8859-1 编码的字符串转换为 UTF-8 编码xml_error_string -- 获取 XML 解析器的错误字符串xml_get_current_byte_index -- 获取 XML 解析器的当前字节索引(current byte index)。xml_get_current_column_number -- 获取 XML 解析器的当前列号 xml_get_current_line_number -- 获取 XML 解析器的当前行号xml_get_error_code -- 获取 XML 解析器错误代码xml_parse_into_struct -- 将 XML 数据解析到数组中xml_parse -- 开始解析一个 XML 文档xml_parser_create_ns -- 生成一个支持命名空间的 XML 解析器 xml_parser_create -- 建立一个 XML 解析器xml_parser_free -- 释放指定的 XML 解析器xml_parser_get_option -- 从 XML 解析器获取选项设置信息xml_parser_set_option -- 为指定 XML 解析进行选项设置xml_set_character_data_handler -- 建立字符数据处理器xml_set_default_handler -- 建立默认处理器xml_set_element_handler -- 建立起始和终止元素处理器xml_set_end_namespace_decl_handler -- 建立终止命名空间声明处理器 xml_set_external_entity_ref_handler -- 建立外部实体指向处理器xml_set_notation_decl_handler -- 建立注释声明处理器xml_set_object -- 在对象中使用 XML 解析器xml_set_processing_instruction_handler -- 建立处理指令(PI)处理器 xml_set_start_namespace_decl_handler -- 建立起始命名空间声明处理器 xml_set_unparsed_entity_decl_handler -- 建立未解析实体定义声明处理器 但是$PointObj=$itemObj->getElementsByTagName('Point');//再去查找一下子节点这句话以上都能执行!getElementsByTagName方法照样能够扑获到啊! 但是$PointObj=$itemObj->getElementsByTagName('Point');//再去查找一下子节点这句话以上都能执行!getElementsByTagName方法照样能够扑获到啊! $XMLStr=' <WallPaperList> <WallPaper ID="69" UpdateTime="2008-12-10 12:00:00"> <Point ID="1"> <Agent ID="123456" UpdateTime="2008-12-10 12:00:00"/> <Agent ID="123457" UpdateTime="2008-12-10 12:00:00"/> </Point> <Point ID="2"> <Agent ID="123456" UpdateTime="2008-12-10 12:00:00"/> <Agent ID="123457" UpdateTime="2008-12-10 12:00:00"/> </Point> </WallPaper> </WallPaperList>'; if($XMLStr!="") { $XMLStr=stripcslashes($XMLStr); $xml = new DOMDocument(); //建立一个DOMDocument $xml->loadXML($XMLStr); //Php指定需要读取xml文件的位置 $itemObj = $xml->getElementsByTagName('WallPaper');//按照名称取得节点,返回所有节点的集合,不过这里这样读LevelOne是没有意义的.... for($i=0;$i <$itemObj->length;$i++) { $id= $itemObj->item($i)->getAttribute("ID"); $updatetime= $itemObj->item($i)->getAttribute("UpdateTime"); echo "ID:".$id." <br>"; echo "UpdateTime:".$updatetime." <br>";//到这里都正确! $PointObj=$itemObj->item($i)->getElementsByTagName('Point');//再去查找一下子节点 echo $PointObj->length; } } DOMNodeList::getElementsByTagName() in C:\wamp\www\admin\interface\wallpaper_update.php on line 36 没有定义的方法在36行,说明那个类下面根本没有这个方法!你的代码我没有怎么看,因为我这里没有php环境。 jakey9826 太感谢了!我错了! 呵呵.关于dom xml操作的问题,尽管提出来.主要是不细心,多看看手册就明白了. 感谢:jakey9826 的确解决了问题,谢谢。 在数据库里记录时间,是用datatime好还是用时间戳好? PHP更新Access的问题 可以这样创建对象吗? 从ASP转换到PHP! 怎样得到网页的返回值啊? 100分求教PHP+Mysql的题目,火急,在线等,谢谢! cvsnt +eclipse 一个古老的问题和其答案 session问题 这是关于绘图的,可以进行聊聊吗 要命!快SOS我!!! 小妹请教JQuery ajaxfileupload文件上传的问题! Call to undefined function apache_get_modules() 是什么原因?
[5Qndi5faind]
adj.不明确的, 未下定义的method [简明英汉词典]
[5meWEd]
n.方法
其实怎么不用php自己带的xml parser呢。
例
以下是 PHP 脚本解析 XML 文档的一些范例。 XML 元素结构范例
第一个范例用缩进格式显示一个文档中起始元素的结构。 例子 1. 显示 XML 元素结构<?php
$file = "data.xml";
$depth = array();function startElement($parser, $name, $attrs) {
global $depth;
for ($i = 0; $i < $depth[$parser]; $i++) {
print " ";
}
print "$name\n";
$depth[$parser]++;
}function endElement($parser, $name) {
global $depth;
$depth[$parser]--;
}$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
if (!($fp = fopen($file, "r"))) {
die("could not open XML input");
}while ($data = fread($fp, 4096)) {
if (!xml_parse($xml_parser, $data, feof($fp))) {
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
}
xml_parser_free($xml_parser);
?>
目录
utf8_decode -- 将用 UTF-8 方式编码的 ISO-8859-1 字符串转换成单字节的 ISO-8859-1 字符串。
utf8_encode -- 将 ISO-8859-1 编码的字符串转换为 UTF-8 编码
xml_error_string -- 获取 XML 解析器的错误字符串
xml_get_current_byte_index -- 获取 XML 解析器的当前字节索引(current byte index)。
xml_get_current_column_number -- 获取 XML 解析器的当前列号
xml_get_current_line_number -- 获取 XML 解析器的当前行号
xml_get_error_code -- 获取 XML 解析器错误代码
xml_parse_into_struct -- 将 XML 数据解析到数组中
xml_parse -- 开始解析一个 XML 文档
xml_parser_create_ns -- 生成一个支持命名空间的 XML 解析器
xml_parser_create -- 建立一个 XML 解析器
xml_parser_free -- 释放指定的 XML 解析器
xml_parser_get_option -- 从 XML 解析器获取选项设置信息
xml_parser_set_option -- 为指定 XML 解析进行选项设置
xml_set_character_data_handler -- 建立字符数据处理器
xml_set_default_handler -- 建立默认处理器
xml_set_element_handler -- 建立起始和终止元素处理器
xml_set_end_namespace_decl_handler -- 建立终止命名空间声明处理器
xml_set_external_entity_ref_handler -- 建立外部实体指向处理器
xml_set_notation_decl_handler -- 建立注释声明处理器
xml_set_object -- 在对象中使用 XML 解析器
xml_set_processing_instruction_handler -- 建立处理指令(PI)处理器
xml_set_start_namespace_decl_handler -- 建立起始命名空间声明处理器
xml_set_unparsed_entity_decl_handler -- 建立未解析实体定义声明处理器
$XMLStr='
<WallPaperList>
<WallPaper ID="69" UpdateTime="2008-12-10 12:00:00">
<Point ID="1">
<Agent ID="123456" UpdateTime="2008-12-10 12:00:00"/>
<Agent ID="123457" UpdateTime="2008-12-10 12:00:00"/>
</Point>
<Point ID="2">
<Agent ID="123456" UpdateTime="2008-12-10 12:00:00"/>
<Agent ID="123457" UpdateTime="2008-12-10 12:00:00"/>
</Point>
</WallPaper>
</WallPaperList>';
if($XMLStr!="")
{
$XMLStr=stripcslashes($XMLStr);
$xml = new DOMDocument(); //建立一个DOMDocument
$xml->loadXML($XMLStr); //Php指定需要读取xml文件的位置
$itemObj = $xml->getElementsByTagName('WallPaper');//按照名称取得节点,返回所有节点的集合,不过这里这样读LevelOne是没有意义的.... for($i=0;$i <$itemObj->length;$i++)
{
$id= $itemObj->item($i)->getAttribute("ID");
$updatetime= $itemObj->item($i)->getAttribute("UpdateTime");
echo "ID:".$id." <br>";
echo "UpdateTime:".$updatetime." <br>";//到这里都正确!
$PointObj=$itemObj->item($i)->getElementsByTagName('Point');//再去查找一下子节点
echo $PointObj->length;
}
}
没有定义的方法在36行,说明那个类下面根本没有这个方法!你的代码我没有怎么看,因为我这里没有php环境。
主要是不细心,多看看手册就明白了.