Heim >Backend-Entwicklung >PHP-Tutorial >php解析cas返回的xml解决思路

php解析cas返回的xml解决思路

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-13 11:49:581572Durchsuche

php解析cas返回的xml
    使用php进行cas验证时,对方返回这么一段xml

<br /><cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'><br />    <cas:authenticationSuccess><br />        <cas:user>zhangjian</cas:user><br />        <cas:language></cas:language><br />    </cas:authenticationSuccess><br /></cas:serviceResponse><br />


    于是使用php相关函数进行解析

$str = <<

/*
$validateXML = simplexml_load_string($str);print_r($validateXML);
$successnode = $validateXML->authenticationSuccess[0];
var_dump($successnode);
*/

$xml = new DOMDocument();
$xml -> loadXML($str);
var_dump($xml);


    结果都解析不出来,哪位朋友遇到过请指点下,不甚感激!!!
------解决方案--------------------
SimpleXML也是PHP5后提供的一套简单易用的xml工具集,
不过它不适用于包含namespace(命名空间)的xml。
------解决方案--------------------
怎么会?
<br /><?php<br />$str = <<<EOT&lt;br /&gt;&lt;cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'&gt;&lt;br /&gt;    &lt;cas:authenticationSuccess&gt;&lt;br /&gt;        &lt;cas:user&gt;zhangjian&lt;/cas:user&gt;&lt;br /&gt;        &lt;cas:language&gt;&lt;/cas:language&gt;&lt;br /&gt;    &lt;/cas:authenticationSuccess&gt;&lt;br /&gt;&lt;/cas:serviceResponse&gt;&lt;br /&gt;EOT;<br /> <br /> <br /><br />$validateXML = simplexml_load_string($str, null, 0, 'cas', true);<br />print_r($validateXML);<br /><br />$successnode = $validateXML->authenticationSuccess[0];<br />print_r($successnode);<br /><br /> <br />$xml = new DOMDocument();<br />$xml -> loadXML($str);<br />print_r($xml);</pre></p>
<pre class="brush: text">SimpleXMLElement Object&lt;br&gt;(&lt;br&gt;    [authenticationSuccess] =&gt; SimpleXMLElement Object&lt;br&gt;        (&lt;br&gt;            [user] =&gt; zhangjian&lt;br&gt;            [language] =&gt; SimpleXMLElement Object&lt;br&gt;                (&lt;br&gt;                )&lt;br&gt;&lt;br&gt;        )&lt;br&gt;&lt;br&gt;)&lt;br&gt;SimpleXMLElement Object&lt;br&gt;(&lt;br&gt;    [user] =&gt; zhangjian&lt;br&gt;    [language] =&gt; SimpleXMLElement Object&lt;br&gt;        (&lt;br&gt;        )&lt;br&gt;&lt;br&gt;)&lt;br&gt;DOMDocument Object&lt;br&gt;(&lt;br&gt;    [doctype] =&gt; &lt;br&gt;    [implementation] =&gt; (object value omitted)&lt;br&gt;    [documentElement] =&gt; (object value omitted)&lt;br&gt;    [actualEncoding] =&gt; &lt;br&gt;    [encoding] =&gt; &lt;br&gt;    [xmlEncoding] =&gt; &lt;br&gt;    [standalone] =&gt; 1&lt;br&gt;    [xmlStandalone] =&gt; 1&lt;br&gt;    [version] =&gt; 1.0&lt;br&gt;    [xmlVersion] =&gt; 1.0&lt;br&gt;    [strictErrorChecking] =&gt; 1&lt;br&gt;    [documentURI] =&gt; file:///D:/AMP/web/&lt;br&gt;    [config] =&gt; &lt;br&gt;    [formatOutput] =&gt; &lt;br&gt;    [validateOnParse] =&gt; &lt;br&gt;    [resolveExternals] =&gt; &lt;br&gt;    [preserveWhiteSpace] =&gt; 1&lt;br&gt;    [recover] =&gt; &lt;br&gt;    [substituteEntities] =&gt; &lt;br&gt;    [nodeName] =&gt; #document&lt;br&gt;    [nodeValue] =&gt; &lt;br&gt;    [nodeType] =&gt; 9&lt;br&gt;    [parentNode] =&gt; &lt;br&gt;    [childNodes] =&gt; (object value omitted)&lt;br&gt;    [firstChild] =&gt; (object value omitted)&lt;br&gt;    [lastChild] =&gt; (object value omitted)&lt;br&gt;    [previousSibling] =&gt; &lt;br&gt;    [attributes] =&gt; &lt;br&gt;    [ownerDocument] =&gt; &lt;br&gt;    [namespaceURI] =&gt; &lt;br&gt;    [prefix] =&gt; &lt;br&gt;    [localName] =&gt; &lt;br&gt;    [baseURI] =&gt; file:///D:/AMP/web/&lt;br&gt;    [textContent] =&gt; &lt;br&gt;    &lt;br&gt;        zhangjian&lt;div class=&quot;clear&quot;&gt;
                 
              
              
        
            &lt;/div&gt;</pre></div><div class="nphpQianMsg"><div class="clear"></div></div><div class="nphpQianSheng"><span>Stellungnahme:</span><div>Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn</div></div></div><div class="nphpSytBox"><span>Vorheriger Artikel:<a class="dBlack" title="PHP 显示有关问题" href="https://m.php.cn/de/faq/199104.html">PHP 显示有关问题</a></span><span>Nächster Artikel:<a class="dBlack" title="在调试一个上传文件并保存在数据库里的小程序,始终出现有关问题,向这里的大神请问" href="https://m.php.cn/de/faq/199107.html">在调试一个上传文件并保存在数据库里的小程序,始终出现有关问题,向这里的大神请问</a></span></div><div class="nphpSytBox2"><div class="nphpZbktTitle"><h2>In Verbindung stehende Artikel</h2><em><a href="https://m.php.cn/de/article.html" class="bBlack"><i>Mehr sehen</i><b></b></a></em><div class="clear"></div></div><ins class="adsbygoogle"
     style="display:block"
     data-ad-format="fluid"
     data-ad-layout-key="-6t+ed+2i-1n-4w"
     data-ad-client="ca-pub-5902227090019525"
     data-ad-slot="8966999616"></ins><script>     (adsbygoogle = window.adsbygoogle || []).push({});
</script><ul class="nphpXgwzList"><li><b></b><a href="https://m.php.cn/de/faq/1.html" title="So verwenden Sie cURL zum Implementieren von Get- und Post-Anfragen in PHP" class="aBlack">So verwenden Sie cURL zum Implementieren von Get- und Post-Anfragen in PHP</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/de/faq/1.html" title="So verwenden Sie cURL zum Implementieren von Get- und Post-Anfragen in PHP" class="aBlack">So verwenden Sie cURL zum Implementieren von Get- und Post-Anfragen in PHP</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/de/faq/1.html" title="So verwenden Sie cURL zum Implementieren von Get- und Post-Anfragen in PHP" class="aBlack">So verwenden Sie cURL zum Implementieren von Get- und Post-Anfragen in PHP</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/de/faq/1.html" title="So verwenden Sie cURL zum Implementieren von Get- und Post-Anfragen in PHP" class="aBlack">So verwenden Sie cURL zum Implementieren von Get- und Post-Anfragen in PHP</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/de/faq/2.html" title="Alle Ausdruckssymbole in regulären Ausdrücken (Zusammenfassung)" class="aBlack">Alle Ausdruckssymbole in regulären Ausdrücken (Zusammenfassung)</a><div class="clear"></div></li></ul></div></div><ins class="adsbygoogle"
     style="display:block"
     data-ad-format="autorelaxed"
     data-ad-client="ca-pub-5902227090019525"
     data-ad-slot="5027754603"></ins><script>     (adsbygoogle = window.adsbygoogle || []).push({});
</script><footer><div class="footer"><div class="footertop"><img src="/static/imghwm/logo.png" alt=""><p>Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!</p></div><div class="footermid"><a href="https://m.php.cn/de/about/us.html">Über uns</a><a href="https://m.php.cn/de/about/disclaimer.html">Haftungsausschluss</a><a href="https://m.php.cn/de/update/article_0_1.html">Sitemap</a></div><div class="footerbottom"><p>                © php.cn All rights reserved
            </p></div></div></footer><script>isLogin = 0;</script><script type="text/javascript" src="/static/layui/layui.js"></script><script type="text/javascript" src="/static/js/global.js?4.9.47"></script></div><script src="https://vdse.bdstatic.com//search-video.v1.min.js"></script><link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css' type='text/css' media='all'/><script type='text/javascript' src='/static/js/viewer.min.js?1'></script><script type='text/javascript' src='/static/js/jquery-viewer.min.js'></script><script>jQuery.fn.wait = function (func, times, interval) {
    var _times = times || -1, //100次
    _interval = interval || 20, //20毫秒每次
    _self = this,
    _selector = this.selector, //选择器
    _iIntervalID; //定时器id
    if( this.length ){ //如果已经获取到了,就直接执行函数
        func && func.call(this);
    } else {
        _iIntervalID = setInterval(function() {
            if(!_times) { //是0就退出
                clearInterval(_iIntervalID);
            }
            _times <= 0 || _times--; //如果是正数就 --

            _self = $(_selector); //再次选择
            if( _self.length ) { //判断是否取到
                func && func.call(_self);
                clearInterval(_iIntervalID);
            }
        }, _interval);
    }
    return this;
}
$("table.syntaxhighlighter").wait(function() {
    $('table.syntaxhighlighter').append("<p class='cnblogs_code_footer'><span class='cnblogs_code_footer_icon'></span></p>");
});
$(document).on("click", ".cnblogs_code_footer",function(){
      $(this).parents('table.syntaxhighlighter').css('display','inline-table');$(this).hide();
});
$('.nphpQianCont').viewer({navbar:true,title:false,toolbar:false,movable:false,viewed:function(){$('img').click(function(){$('.viewer-close').trigger('click');});}});
</script></body><!-- Matomo --><script>  var _paq = window._paq = window._paq || [];
  /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
  _paq.push(['trackPageView']);
  _paq.push(['enableLinkTracking']);
  (function() {
    var u="https://tongji.php.cn/";
    _paq.push(['setTrackerUrl', u+'matomo.php']);
    _paq.push(['setSiteId', '9']);
    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
    g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
  })();
</script><!-- End Matomo Code --></html>