【发布时间】:2014-11-26 23:24:50
【问题描述】:
我正在做一个项目,在该项目中我提取有关 NHL 的各种统计数据并将它们插入到 SQL 表中。目前,我正在进行抓取阶段,并找到了一个我已经实现的 XML 解析器,但我终其一生都无法弄清楚如何从中提取信息。该表可在此处找到 -> http://www.tsn.ca/datafiles/XML/NHL/standings.xml。 解析器应该生成一个多维数组,我只是试图从“信息团队”部分中提取所有统计信息,但我不知道如何从数组中提取这些信息。我将如何拉动蒙特利尔的胜利次数? (仅作为其余统计数据的示例) 这是页面当前的样子 -> http://mattegener.me/school/standings.php 这是代码:
<?php
$strYourXML = "http://www.tsn.ca/datafiles/XML/NHL/standings.xml";
$fh = fopen($strYourXML, 'r');
$dummy = fgets($fh);
$contents = '';
while ($line = fgets($fh)) $contents.=$line;
fclose($fh);
$objXML = new xml2Array();
$arrOutput = $objXML->parse($contents);
print_r($arrOutput[0]); //This print outs the array.
class xml2Array {
var $arrOutput = array();
var $resParser;
var $strXmlData;
function parse($strInputXML) {
$this->resParser = xml_parser_create ();
xml_set_object($this->resParser,$this);
xml_set_element_handler($this->resParser, "tagOpen", "tagClosed");
xml_set_character_data_handler($this->resParser, "tagData");
$this->strXmlData = xml_parse($this->resParser,$strInputXML );
if(!$this->strXmlData) {
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($this->resParser)),
xml_get_current_line_number($this->resParser)));
}
xml_parser_free($this->resParser);
return $this->arrOutput;
}
function tagOpen($parser, $name, $attrs) {
$tag=array("name"=>$name,"attrs"=>$attrs);
array_push($this->arrOutput,$tag);
}
function tagData($parser, $tagData) {
if(trim($tagData)) {
if(isset($this->arrOutput[count($this->arrOutput)-1]['tagData'])) {
$this->arrOutput[count($this->arrOutput)-1]['tagData'] .= $tagData;
}
else {
$this->arrOutput[count($this->arrOutput)-1]['tagData'] = $tagData;
}
}
}
function tagClosed($parser, $name) {
$this->arrOutput[count($this->arrOutput)-2]['children'][] = $this->arrOutput[count($this- >arrOutput)-1];
array_pop($this->arrOutput);
}
}
?>
【问题讨论】:
-
检查我的编辑答案
标签: php mysql arrays xml parsing