用php解析xml,子女
答
我认为将XML数据解析为像结构树一样会很有帮助。我这样做是为了你,看看这里:
<?php
$data = '
<item>
<url />
<name />
<photos>
<photo>1020944_0.jpg</photo>
<photo>1020944_1.jpg</photo>
<photo>1020944_2.jpg</photo>
</photos>
<user_id />
</item>';
$tree = array();
$stack = array(&$tree);
function startElement($parser, $name, $attrs) {
global $stack;
$t = &$stack[ count($stack) - 1 ];
$t[ $name ][] = array();
$n = count($t[ $name ]);
array_push($stack, &$t[ $name ][ $n - 1 ]);
}
function endElement($parser, $name) {
global $stack;
array_pop($stack);
}
function characterData($parser, $data) {
global $stack;
$t = &$stack[ count($stack) - 1 ];
$t[ '#CDATA' ] = trim($data);
}
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
xml_parse($xml_parser, $data, TRUE);
foreach($tree[ 'ITEM' ][ 0 ][ 'PHOTOS' ][ 0 ][ 'PHOTO' ] as $photo) {
echo "{$photo[ '#CDATA' ]}\n";
}
?>
其实,我有(业余)重新实现什么样的SimpleXML已经给你:
<?php
$xml = new SimpleXMLElement($data);
foreach($xml->photos->photo as $photo) {
echo "$photo\n";
}
?>
+0
+/- 0,最好的解决方案是使用SimpleXML库,自己解析它是不必要的(除非XML非常大(> 10MB)并且它很糟糕保持这样的解决方案。 – dbemerlin 2010-06-07 10:50:48
我不知道你的代码是应该做的,你的问题是什么。你想读取给定的XML结构并将相应的信息存储在数据库表中,对吗?我注意到你连接字符串$ photos中的字符数据,但从未使用过。这是你的问题是关于什么? – mkluwe 2010-06-07 08:14:27
yes确实.......... – 2010-06-07 09:58:49