<?php
$str = <<<END
<?xml version="1.0" encoding="utf-8" ?> 
<prons> 
<pron type="GB"><hwd>aaa</hwd>
<pos>n</pos>
<id>p008-000170337 </id>
<filename>ld41meatball.wav </filename> </pron> 
<pron type="GB"><hwd>bbb</hwd> <pos>adj </pos> <id>p008-000455551 </id> <filename>unfamiliar.wav </filename> </pron> 
<pron type="GB"><hwd>test</hwd> <pos>adj </pos> <id>p008-000455551 </id> <filename>unfamiliar.wav </filename> </pron> 
</prons> 
END;//echo $str;
$xml = xml_parser_create("UTF-8");
xml_parse_into_struct($xml, $str, $vals, $index);
xml_parser_free($xml);foreach($index as $k=>$v){
if($k == "HWD"){
foreach($v as $v1){
$result[] = $vals[$v1]["value"];
}
}
}print_r($result);
?>

解决方案 »

  1.   

    简单的说……正则一下。
    <?php
    $test = '<prons>
    <pron type="GB"> <hwd>aaa </hwd> <pos>n </pos> <id>p008-000170337 </id> <filename>ld41meatball.wav </filename> </pron>
    <pron type="GB"> <hwd>bbb </hwd> <pos>adj </pos> <id>p008-000455551 </id> <filename>unfamiliar.wav </filename> </pron>
    <pron type="GB"> <hwd>test </hwd> <pos>adj </pos> <id>p008-000455551 </id> <filename>unfamiliar.wav </filename> </pron>
    </prons>';
    $hwd_reg = '/<hwd>(.+)?<\/hwd>/';
    preg_match_all($hwd_reg,$test,$matchall);
    print_r($matchall[1]);
    ?>
    结果就是这样的:
    Array
    (
        [0] => aaa 
        [1] => bbb 
        [2] => test 
    )
      

  2.   


    $xml_file = '../test3.xml';
    $xml = simplexml_load_file($xml_file);
    foreach ($xml->pron as $child)
    {
    foreach ($child->hwd as $children)
    {
    echo $children."<br>";
    }
    }