使用XML解析时,xml资源是您访问的对象吗?

问题描述:

我似乎不太明白xml_parse的工作原理。我正在做的是获取XML文件的内容,创建一个解析器,并将其传递到xml_parse()。之后我不知道该怎么做。我在想,在我的情况下,$ xml是我现在可以迭代的数组。我试图看看我会如何解析我的数据。使用XML解析时,xml资源是您访问的对象吗?

$fp = file_get_contents("memberdata.xml"); 
echo "pre-create"; 
$xml = xml_parser_create(); 
echo "pre-parse"; 
$status = xml_parse($xml,$fp); 

if(!$status){ 
    die("Error parsing data from $fp into $xml"); 
} 
echo "pre XML posting"; 
echo "<br />".$xml."<br />"; 
print_r($xml); 
xml_parser_free($xml); 

我似乎无法弄清楚如何访问这个。

示例XML数据如下:

<currentTime>2012-09-05 03:43:25</currentTime> 
<result> 
    <rowset name="members" key="characterID" columns="characterID,name,startDateTime,baseID,base,title,logonDateTime,logoffDateTime,locationID,location,shipTypeID,shipType,roles,grantableRoles"> 
    <row ..> 
    </rowset> 
</result> 
<cachedUntil></cashedUntil> 
+0

不值得回答,但我会建议使用两种'SimpleXML'或'DOMDocument'(均内置于PHP)。你会得到更多的支持。在这个问题之前,我从来没有听说过'xml_parser'! –

+0

我在php.net上看到了这些,但我认为那些是我需要安装的东西,而且我正在考虑用基本的东西来做。那我来看看SimpleXML。 – Fallenreaper

+0

他们是PHP的图书馆,但他们应该包括一个香草PHP安装。只有在您执行PHP安装并将其排除在外时,才会排除它们。 –

而不是使用基本工具,使用工具包中的一个,SimpleXML的将缓解很多坎坷。这个问题的答案是使用SimpleXML重做的。

$fp = file_get_contents("memberdata.xml"); 
$eve = new SimpleXMLElement($fp); 

$cols = $eve->{'result'}->rowset['columns']; 
//I put result in {} because result is a special character in php. 
$cols = explode(",",$cols); 
foreach ($cols as $c){ 
    echo "".$c."<br />"; 
} 
    //output is printed to screen