ホームページ  >  記事  >  バックエンド開発  >  PHP は cas から返された XML を解析します

PHP は cas から返された XML を解析します

WBOY
WBOYオリジナル
2016-06-23 14:01:211324ブラウズ

cas検証にphpを使ったところ、相手がこんな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>声明:</span><div>この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。</div></div></div><div class="nphpSytBox"><span>前の記事:<a class="dBlack" title="PHP クラスの継承、コンストラクターについて" href="http://m.php.cn/ja/faq/260807.html">PHP クラスの継承、コンストラクターについて</a></span><span>次の記事:<a class="dBlack" title="PHP クラスの継承、コンストラクターについて" href="http://m.php.cn/ja/faq/260809.html">PHP クラスの継承、コンストラクターについて</a></span></div><div class="nphpSytBox2"><div class="nphpZbktTitle"><h2>関連記事</h2><em><a href="http://m.php.cn/ja/article.html" class="bBlack"><i>続きを見る</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="http://m.php.cn/ja/faq/1.html" title="cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法" class="aBlack">cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/ja/faq/1.html" title="cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法" class="aBlack">cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/ja/faq/1.html" title="cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法" class="aBlack">cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/ja/faq/1.html" title="cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法" class="aBlack">cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/ja/faq/2.html" title="正規表現内のすべての式記号 (概要)" class="aBlack">正規表現内のすべての式記号 (概要)</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>福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!</p></div><div class="footermid"><a href="http://m.php.cn/ja/about/us.html">私たちについて</a><a href="http://m.php.cn/ja/about/disclaimer.html">免責事項</a><a href="http://m.php.cn/ja/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></html>