dongnan1899 2014-05-12 02:46
浏览 38
已采纳

如何获取具有属性名称的xml标记

I am trying to get the value (number 21.48) from the field "NMONTHLYINSTALMENT" with PHP simple_xml.

This is my PHP code and XML:

$xml->data->struct("var[@name='NMONTHLYINSTALMENT']")->number

<wddxPacket version='1.0'><header/>
    <data>
      <struct>
        <var name='UWEBSHOPID'><string>6FF1633B-6AE0-4AB6-A19E-D934B7DF783F</string></var>
        <var name='NMONTHLYINSTALMENT'><number>21.48</number></var>
        <var name='CCOMMAND'><string>GetMonthlyInstalment</string></var>
        <var name='NDURATION'><string>48</string></var>
        <var name='NPRICE'><string>825.89</string></var>
        <var name='COUTPUTTYPE'><string>XML</string></var>
      </struct>
    </data>
</wddxPacket>

I can not get it to work! Any help is much appriciated! Thanks!

  • 写回答

2条回答 默认 最新

  • dongxing1965 2014-05-12 02:51
    关注

    DEMO

    You can use following;

    <?php
    
    $xml_str = <<< EOT
    <wddxPacket version='1.0'><header/>
        <data>
          <struct>
            <var name='UWEBSHOPID'><string>6FF1633B-6AE0-4AB6-A19E-D934B7DF783F</string></var>
            <var name='NMONTHLYINSTALMENT'><number>21.48</number></var>
            <var name='CCOMMAND'><string>GetMonthlyInstalment</string></var>
            <var name='NDURATION'><string>48</string></var>
            <var name='NPRICE'><string>825.89</string></var>
            <var name='COUTPUTTYPE'><string>XML</string></var>
          </struct>
        </data>
    </wddxPacket>
    EOT;
    
    $xml = simplexml_load_string($xml_str);
    $result = $xml->xpath('//data/struct/var[@name="NMONTHLYINSTALMENT"]/number');
    
    echo $result[0][0];
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?