【问题标题】:¿How to get the data of XML with php?¿如何用php获取XML的数据?
【发布时间】:2020-12-23 02:01:17
【问题描述】:

我有下一个问题,在我的代码中,我得到一个 XML 格式的 SOAP 响应,所以我想循环它以获取 XML 包含的信息,xml 看起来像这样:

<?php
$xml_response = <<<EOF
<?xml version="1.0" encoding="UTF-8"?>
<REPORTES>
    DEMO
    <REPORTE TIPO="BASIC">
        <INVESTIGADO>SOMETHING</INVESTIGADO>
        <FECHA>SOMETHING</FECHA>
        <HORA>SOMETHING</HORA>
        <BASE>SOMETHING

            <PERIODO>SOMETHING</PERIODO>
            <JUICIO>SOMETHING</JUICIO>
            <GRADO>SOMETHING</GRADO>
        </BASE>
        <GRADO_MAXIMO>SOMETHING</GRADO_MAXIMO>
        <CASOS>
            <DEFINICION>SOMETHING</DEFINICION>
            <TIEMPO>SOMETHING</TIEMPO>
        </CASOS>
        <PDF_REPORT>SOMETHING</PDF_REPORT>
    </REPORTE>
    <REPORTE TIPO="DETAIL">
        <BASE>SOMETHING
            <INFORMACION>
                <JUZGADO>SOMETHING</JUZGADO>
                <JUZ_NUM>SOMETHING</JUZ_NUM>
                <SECRETARIA>SOMETHING</SECRETARIA>
                <FECHA_ACU>SOMETHING</FECHA_ACU>
                <NUM_BOL>SOMETHING</NUM_BOL>
                <FECHA_PUB>SOMETHING</FECHA_PUB>
                <RUBRO>SOMETHING</RUBRO>
            </INFORMACION>
        </BASE>
    </REPORTE>
</REPORTES>
EOF;
?>

我正在尝试获取属性“TIPO”的值,因为子项具有不同的结构,问题是代码打印值时只打印第一个

$xml = simplexml_load_string($xml_response);
foreach ($xml->children()->attributes() as $key => $val) {
    echo "Key: " . $key . " value: " . $val . "<br>";
    var_dump($xml);
}

代码的输出

object(SimpleXMLElement)#1 (1) { ["REPORTE"]=> array(2) { [0]=> object(SimpleXMLElement)#7 (8)
 { ["@attributes"]=> array(1) { ["TIPO"]=> string(5) "BASIC" } ["INVESTIGADO"]=> string(9) 

"SOMETHING" ["FECHA"]=> string(9) "SOMETHING" ["HORA"]=> string(9) "SOMETHING" ["BASE"]=> string(25) 

"SOMETHING " ["GRADO_MAXIMO"]=> string(9) "SOMETHING" ["CASOS"]=> object(SimpleXMLElement)#9 (2) { 

["DEFINICION"]=> string(9) "SOMETHING" ["TIEMPO"]=> string(9) "SOMETHING" } ["PDF_REPORT"]=> 

string(9) "SOMETHING" } [1]=> object(SimpleXMLElement)#8 (2) 

{ ["@attributes"]=> array(1)
 { ["TIPO"]=> string(6) "DETAIL" } ["BASE"]=> string(16) "SOMETHING " } } }
Key: TIPO value: BASIC

我制作了 var_dumb 以确保所有孩子都在场。 最后的问题是…… 如何让 foreach 获取子“REPORTES”的属性?

【问题讨论】:

    标签: php xml for-loop soap foreach


    【解决方案1】:

    文档并没有真正指定这一点,但是您需要在 children 方法上循环,或者在开始循环之前将该值分配给 var。基本上不要链接你的属性方法。然后它将按预期工作。

    <?php
    
    $xml = simplexml_load_string($xml_response);
    foreach ($xml->children() as $child) {
      foreach($child->attributes() as $key => $val) {
          echo "Key: " . $key . " value: " . $val . "<br>";
        }  
    }
    

    【讨论】:

      猜你喜欢
      • 2017-08-27
      • 1970-01-01
      • 1970-01-01
      • 2012-11-11
      • 1970-01-01
      • 2012-04-20
      • 2015-03-28
      • 2012-10-22
      • 2017-09-13
      相关资源
      最近更新 更多