如何在PHP中解析多个类似的XML标记?

时间:2011-10-19 12:09:37

标签: php xml

我有一个XML文件,如下所示。我想用PHP解析这个XML文件。

<id_list>
    -
    <ids>
        <id>195002349</id>
        <id>374487611</id>
        <id>192983648</id>
        <id>168378766</id>`
        <id>161573001</id>
    </ids>

    <next_cursor>0</next_cursor>
    <previous_cursor>0</previous_cursor>
</id_list>

我希望输出格式为:

Id1=195002349 Id2=374487611 Id3=192983648 Id4=168378766 Id5=161573001

2 个答案:

答案 0 :(得分:0)

在阅读XML(使用SimpleXMLElement($file))时,使用XPath搜索“ids”,并执行while循环以阅读元素的文本。

像这样:

$notes = new SimpleXMLElement('test2.xml', NULL, true);
$all = array();
$results = $notes->xpath("/id_list/ids/id");
foreach($results as $to){
    echo "<br>".$to;
    $all[]=(string)$to;
}

print_r($all);

答案 1 :(得分:0)

这是一个方便的小函数,用于去除两个指定文本片段之间的字符串。这可以用于解析XML文本,bbCode或任何其他分隔的代码/文本。

function get_string_between($string, $start, $end){
    $string = " ".$string;
    $ini = strpos($string,$start);
    if ($ini == 0) return "";
    $ini += strlen($start);
    $len = strpos($string,$end,$ini) - $ini;
    return substr($string,$ini,$len);
}

$fullstring = "this is my [tag]dog[/tag]";
$parsed = get_string_between($fullstring, "[tag]", "[/tag]");

echo $parsed; // (result = dog)