【问题标题】:PHP - parsing complicated XML with NameSpacesPHP - 使用 NameSpaces 解析复杂的 XML
【发布时间】:2013-07-07 09:39:06
【问题描述】:

我猜测 NameSpaces 导致 simplexml_load_string 无法工作,但我绝对不确定。

log.xml

<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sns="http://soap.com/pbx">
   <env:Body>
      <sns:CDR>
         <PrimaryCallID>02v7b7c16v@12.123.123.12</PrimaryCallID>
         <CallID>d352f920@pbx</CallID>
         <From>"SMITH JOHN    " &lt;sip:11234567890@sub.domain.com:5060;user=phone&gt;</From>
         <To>&lt;sip:3216549870@111.111.111.111:5060;user=phone&gt;</To>
         <Direction>O</Direction>
         <Type>attendant</Type>
         <RemoteParty />
         <LocalParty />
         <TrunkName />

... more xml...

      </sns:CDR>
   </env:Body>
</env:Envelope>

parse.php

<?php 
$string = "log.xml";
$xml = simplexml_load_string($string);
print_r($xml);
?>

print_r 我没有收到任何回复 我错过了什么?

【问题讨论】:

    标签: php xml xml-parsing


    【解决方案1】:

    simplexml_load_string 将字符串作为参数而不是文件名。
    您正在尝试将字符串“log.xml”作为 XML 加载,但这不起作用
    你可以使用这个:

    $filename = "log.xml";
    $xml = simplexml_load_string(file_get_contents($filename));
    print_r($xml);
    

    【讨论】:

    • 好点!改了,现在结果是:SimpleXMLElement Object ( )我也切换到simple_load_file(),结果一样。
    • xml文件和php文件在同一目录吗?
    • 是的,肯定在同一个目录
    • 如果你打印返回的 file_get_contents 里面有什么?
    • 我得到的和我上面发布的一样。好吧,在浏览器中,xml 确实被翻译了,但在源代码中它以 xml 格式出现
    猜你喜欢
    • 2016-07-04
    • 1970-01-01
    • 1970-01-01
    • 2020-12-08
    • 1970-01-01
    • 2013-01-17
    • 2013-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多