如何使用xml_parse_into_struct()

时间:2015-04-01 14:29:59

标签: php xml xml-parsing

我正在尝试使用xml_parse_into_struct(),但它返回false

我的代码看起来像这样

$p = xml_parser_create();
if (xml_parse_into_struct($p,$contenido,$vals, $index))
{
    print_r($vals);
}

变量的内容

$contenido 看起来像这样

<saltest31>
    <anuncio1>
        <id>12346</id>
        <titulo> BD authority</titulo>
        <descripcion>Preciosa casa en jardines de las animas, en xalapa veracruz. 550 m2 de terreno la mayoria jardin con arboles frutales, amplias recamaras, cocina, salon de juegos, terraza y palapa CVICA123</descripcion>
        <fecha>11/12/2014 10:27:15</fecha>
        <municipio>Chalchuapa</municipio>
        <moneda>Peso</moneda>
        <construccion>500</construccion>
        <terreno>550</terreno>
        <habitaciones>5</habitaciones>
        <banos>4</banos>
        <imagenes>
                <TOTAL>10</TOTAL>
                <IDIMAGE>5567</imagen_url>
                <IDIMAGE>5568</imagen_url>
                <IDIMAGE>5569</imagen_url>
                <IDIMAGE>5570</imagen_url>
                <IDIMAGE>5571</imagen_url>
        </imagenes>
    </anuncio>
</saltest3>

我的问题是if语句没有返回true,不知道我哪里错了

提前致谢

1 个答案:

答案 0 :(得分:0)

这是因为您的XML中有太多错误匹配的标记从顶部开始<saltest31>...</saltest3>。这将导致返回0。

另外xml_parse_into_struct()返回1或0,实际上不应该将其误认为是真和假。来自docs

  

xml_parse_into_struct()返回0表示失败,1表示成功。这与 FALSE TRUE 不同,请小心使用===等运算符。

鉴于此,您应该明确地执行测试:

$p = xml_parser_create();
if (xml_parse_into_struct($p,$contenido,$vals, $index) == 1)
{
    print_r($vals);
}