1

您好,我的 php var(字符串)看起来像 xml:它不是真正的 xml 文件,只是具有与 xml 相同结构的 php 字符串。我需要在 php 循环中从中获取 ROW_DATA 字段。(我从肥皂网络服务获得的这个 xml 结构)。

2013 年 7 月 9 日上午 10:01:29 2013 年 7 月 9 日上午 10:01:29

<ROW_DATA>
    <AMOUNT_ROOMS>2</AMOUNT_ROOMS>
    <SUPP_MOVIE_NAME>tiz</SUPP_MOVIE_NAME>
    <AMOUNT_NIS>3680</AMOUNT_NIS>
    <PRICE_DOCKET_ID>1233</PRICE_DOCKET_ID>
</ROW_DATA>

<ROW_DATA>
    <AMOUNT_ROOMS>1</AMOUNT_ROOMS>
    <SUPP_MOVIE_NAME>mantiz</SUPP_MOVIE_NAME>
    <AMOUNT_NIS>3690</AMOUNT_NIS>
    <PRICE_DOCKET_ID>1234</PRICE_DOCKET_ID>
</ROW_DATA>

<StartTime>7/9/2013
    10:01:29
    AM</StartTime>
<EndTime>7/9/2013
    10:01:30
    AM</EndTime>

现在我需要在 php 数组中得到这个...有什么想法吗???

4

3 回答 3

5

imo,更好的方法是:

  1. 将heredoc与xml定义一起使用

    $string = <<<XML
    <?xml version='1.0'?>
    ... // your xml here
    XML;
    
  2. 返回数组,而不是SimpleXMLElement Object如果他需要它,与

    $xml = (array)simplexml_load_string($string);

于 2013-07-09T15:00:33.197 回答
2
$str = '<ROOT>
    <StartTime>7/9/2013
        10:01:29
        AM</StartTime>
    <EndTime>7/9/2013
        10:01:29
        AM</EndTime>

    <ROW_DATA>
        <AMOUNT_ROOMS>2</AMOUNT_ROOMS>
        <SUPP_MOVIE_NAME>tiz</SUPP_MOVIE_NAME>
        <AMOUNT_NIS>3680</AMOUNT_NIS>
        <PRICE_DOCKET_ID>1233</PRICE_DOCKET_ID>
    </ROW_DATA>

    <ROW_DATA>
        <AMOUNT_ROOMS>1</AMOUNT_ROOMS>
        <SUPP_MOVIE_NAME>mantiz</SUPP_MOVIE_NAME>
        <AMOUNT_NIS>3690</AMOUNT_NIS>
        <PRICE_DOCKET_ID>1234</PRICE_DOCKET_ID>
    </ROW_DATA>

    <StartTime>7/9/2013
        10:01:29
        AM</StartTime>
    <EndTime>7/9/2013
        10:01:30
        AM</EndTime>

</ROOT>';

$xml = simplexml_load_string($str);
print_r($xml);

输出:

SimpleXMLElement Object
(
    [StartTime] => Array
        (
            [0] => 7/9/2013
        10:01:29
        AM
            [1] => 7/9/2013
        10:01:29
        AM
        )

    [EndTime] => Array
        (
            [0] => 7/9/2013
        10:01:29
        AM
            [1] => 7/9/2013
        10:01:30
        AM
        )

    [ROW_DATA] => Array
        (
            [0] => SimpleXMLElement Object
                (
                    [AMOUNT_ROOMS] => 2
                    [SUPP_MOVIE_NAME] => tiz
                    [AMOUNT_NIS] => 3680
                    [PRICE_DOCKET_ID] => 1233
                )

            [1] => SimpleXMLElement Object
                (
                    [AMOUNT_ROOMS] => 1
                    [SUPP_MOVIE_NAME] => mantiz
                    [AMOUNT_NIS] => 3690
                    [PRICE_DOCKET_ID] => 1234
                )

        )

)
于 2013-07-09T14:49:03.063 回答
0

除了 brbcoding 的答案可以附加:

print_r($xml->xpath('/ROOT'));

这会将数据作为数组返回。

要将它们循环显示给浏览器,您可以使用xpath方法 或 $xml->StartTime 等属性获取部分 xml

于 2013-07-09T14:58:18.417 回答