【问题标题】:Parsing XML with namespace information [duplicate]使用命名空间信息解析 XML [重复]
【发布时间】:2014-06-12 13:46:34
【问题描述】:

我找到了很多解决这个问题的方法,但是我的代码不起作用!

XML 信息:

<?xml version="1.0" encoding="UTF-8"?>
    <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
        <S:Body>
            <ns2:resultado xmlns:ns2="http://webservice.consulta.spcjava.spcbrasil.org/" data="2014-06-03T11:37:32.001-03:00" restricao="false">
             <protocolo digito="2" numero="1204248496" />
             .... other XML info

我的代码:

$s = '<?xml version="1.0" encoding="UTF-8"?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><ns2:resultado xmlns:ns2="http://webservice.consulta.spcjava.spcbrasil.org/" data="2014-06-03T11:37:32.001-03:00" restricao="false"><protocolo digito="2" numero="1204248496" /> ...

$xml = simplexml_load_string($s);

$x2 = $xml->children('http://schemas.xmlsoap.org/soap/envelope/')->Body->children('http://webservice.consulta.spcjava.spcbrasil.org/')->resultado->protocolo->digito;

print_r($x2);
var_dump(count($x2));

为对象计数返回 null 和 0。

我一直在关注这个教程:http://amigotechnotes.wordpress.com/2013/11/16/parse-xml-with-namespace-by-simplexml-in-php/

我不明白我的示例与他的示例有何不同。 :/

谁能帮我解决这个问题,好吗?

【问题讨论】:

    标签: php xml xml-parsing simplexml xml-namespaces


    【解决方案1】:

    终于用另一种语法让它工作了。

    $xml = simplexml_load_string($resultadoDocumento[0]["cdo_xml"]);
    $resultadoSPC = $xml->children('S', TRUE)->Body->children('ns2', TRUE)->children();
    

    通过以下方式访问节点:

    <?php foreach ($resultadoSPC->consumidor->children()->{"consumidor-pessoa-fisica"} as $consumidorElement) : ?>
    <?php echo $consumidorElement->attributes()->{"nome"}; ?>
    

    【讨论】:

    • 如果您让它与前缀一起使用,请使用 URI 创建第二个变体,因为前缀可以更改,而 URI 不会。对于您的示例,它们应该可以互换使用,因此您的答案中的代码在技术上与您的问题没有不同。所以这个问题已经包含了答案,这意味着你的答案(在这个意义上)不是一个真正的答案。你最好弄清楚你的具体分析是什么,你的问题的根本原因是什么。
    • 感谢@hakre 的提示。我会接受答案,因为使用此语法使其工作,当我需要它工作时帮助我。其他问题和示例与我的 XML 结构不同,并且由于我是使用 XML 文件的新手,使用类似的结构将帮助我尽快解决我的问题。我希望它可以帮助别人。
    猜你喜欢
    • 1970-01-01
    • 2010-10-10
    • 1970-01-01
    • 1970-01-01
    • 2021-05-03
    • 2014-01-10
    相关资源
    最近更新 更多