Home >Backend Development >PHP Tutorial >php解析cas返回的xml

php解析cas返回的xml

WBOY
WBOYOriginal
2016-06-23 14:01:211359browse

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

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


    于是使用php相关函数进行解析
$str = <<authenticationSuccess[0];var_dump($successnode);*/$xml = new DOMDocument();$xml -> loadXML($str);var_dump($xml);


    结果都解析不出来,哪位朋友遇到过请指点下,不甚感激!!!


回复讨论(解决方案)

SimpleXML也是PHP5后提供的一套简单易用的xml工具集,
不过它不适用于包含namespace(命名空间)的xml。

怎么会?

<?php$str = <<<EOT&lt;cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'&gt;    &lt;cas:authenticationSuccess&gt;        &lt;cas:user&gt;zhangjian&lt;/cas:user&gt;        &lt;cas:language&gt;&lt;/cas:language&gt;    &lt;/cas:authenticationSuccess&gt;&lt;/cas:serviceResponse&gt;EOT;  $validateXML = simplexml_load_string($str, null, 0, 'cas', true);print_r($validateXML);$successnode = $validateXML->authenticationSuccess[0];print_r($successnode); $xml = new DOMDocument();$xml -> loadXML($str);print_r($xml);</pre>  <pre class="sycode" name="code">SimpleXMLElement Object(    [authenticationSuccess] =&gt; SimpleXMLElement Object        (            [user] =&gt; zhangjian            [language] =&gt; SimpleXMLElement Object                (                )        ))SimpleXMLElement Object(    [user] =&gt; zhangjian    [language] =&gt; SimpleXMLElement Object        (        ))DOMDocument Object(    [doctype] =&gt;     [implementation] =&gt; (object value omitted)    [documentElement] =&gt; (object value omitted)    [actualEncoding] =&gt;     [encoding] =&gt;     [xmlEncoding] =&gt;     [standalone] =&gt; 1    [xmlStandalone] =&gt; 1    [version] =&gt; 1.0    [xmlVersion] =&gt; 1.0    [strictErrorChecking] =&gt; 1    [documentURI] =&gt; file:///D:/AMP/web/    [config] =&gt;     [formatOutput] =&gt;     [validateOnParse] =&gt;     [resolveExternals] =&gt;     [preserveWhiteSpace] =&gt; 1    [recover] =&gt;     [substituteEntities] =&gt;     [nodeName] =&gt; #document    [nodeValue] =&gt;     [nodeType] =&gt; 9    [parentNode] =&gt;     [childNodes] =&gt; (object value omitted)    [firstChild] =&gt; (object value omitted)    [lastChild] =&gt; (object value omitted)    [previousSibling] =&gt;     [attributes] =&gt;     [ownerDocument] =&gt;     [namespaceURI] =&gt;     [prefix] =&gt;     [localName] =&gt;     [baseURI] =&gt; file:///D:/AMP/web/    [textContent] =&gt;             zhangjian            )</pre> </p> <p class="sougouAnswer">  谢谢唠叨大大,刚刚使用一个方法解决了,不过没有大大的好  <br>  <br>  <pre class="sycode" name="code">$str = <<<EOT&lt;cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'&gt;    &lt;cas:authenticationSuccess&gt;        &lt;cas:user&gt;zhangjian&lt;/cas:user&gt;        &lt;cas:language&gt;&lt;/cas:language&gt;    &lt;/cas:authenticationSuccess&gt;&lt;/cas:serviceResponse&gt;EOT;$str = str_replace('cas:', '', $str);$validateXML = simplexml_load_string($str);$successnode = $validateXML->authenticationSuccess[0];echo (string)$successnode->user;</pre> </p></div><div class="nphpQianMsg"><div class="clear"></div></div><div class="nphpQianSheng"><span>Statement:</span><div>The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn</div></div></div><div class="nphpSytBox"><span>Previous article:<a class="dBlack" title="PHP类继承,有关构造函数" href="https://m.php.cn/faq/260807.html">PHP类继承,有关构造函数</a></span><span>Next article:<a class="dBlack" title="关于浏览器标签显示为文章标题的问题" href="https://m.php.cn/faq/260809.html">关于浏览器标签显示为文章标题的问题</a></span></div><div class="nphpSytBox2"><div class="nphpZbktTitle"><h2>Related articles</h2><em><a href="https://m.php.cn/article.html" class="bBlack"><i>See more</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/faq/1.html" title="How to use cURL to implement Get and Post requests in PHP" class="aBlack">How to use cURL to implement Get and Post requests in PHP</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/faq/1.html" title="How to use cURL to implement Get and Post requests in PHP" class="aBlack">How to use cURL to implement Get and Post requests in PHP</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/faq/1.html" title="How to use cURL to implement Get and Post requests in PHP" class="aBlack">How to use cURL to implement Get and Post requests in PHP</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/faq/1.html" title="How to use cURL to implement Get and Post requests in PHP" class="aBlack">How to use cURL to implement Get and Post requests in PHP</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/faq/2.html" title="All expression symbols in regular expressions (summary)" class="aBlack">All expression symbols in regular expressions (summary)</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>Public welfare online PHP training,Help PHP learners grow quickly!</p></div><div class="footermid"><a href="https://m.php.cn/about/us.html">About us</a><a href="https://m.php.cn/about/disclaimer.html">Disclaimer</a><a href="https://m.php.cn/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>