2017-03-21 9 views
1

私は、属性 "XHTMLのxmlns" を削除しようとした "XHTML:リンク" 次のコードで:PHP DOMドキュメント:xmlのノード "default:link"を "xhtml:link"に置き換えるか変更するには?タグから:

ソースコード:

$doc = new DOMDocument('1.0', 'utf-8'); 
    $url = 'android-app://com.domain.name'; 
    $element = $doc->createElementNS($url,'xhtml:link'); 

    $attribute = $doc->childNodes->item(0); 

    //echo '<br>tag: '.$doc->getElementsByTagName("xhtml:link")[0]; 

    $element->setAttribute('href', $url); 
    $element->setAttribute('rel', 'alternate'); 

    //echo '<pre>';print_r($element);echo '</pre>'; 


    $element->hasAttributeNS($url, 'xhtml'); 
    $element->removeAttributeNS($url, 'xhtml'); 

    $doc->appendChild($element); 
    echo $doc->saveXML(); 

出力:

<?xml version="1.0" encoding="utf-8"?> 
    <default:link href="android-app://com.domain.name" rel="alternate"/> 

しかし、出力は次のようになります:

<?xml version="1.0" encoding="utf-8"?> 
    <xhtml:link href="android-app://com.domain.name" rel="alternate"/> 

どうすればいいですか?ここで私はタグを置き換えると打った...

ありがとう!

+0

しかし、あなたは結果が有効なXMLではないことを知っていますか?未定義の名前空間接頭辞があります。 – ThW

答えて

0

ではなくcreateElementNScreateElement機能を試してみてください。

$doc = new DOMDocument('1.0', 'utf-8'); 
$url = 'android-app://com.domain.name'; 
$element = $doc->createElement('xhtml:link'); 

$attribute = $doc->childNodes->item(0); 

$element->setAttribute('href', $url); 
$element->setAttribute('rel', 'alternate'); 

$doc->appendChild($element); 
echo $doc->saveXML(); 

OUTPUT:

<?xml version="1.0" encoding="utf-8"?> 
<xhtml:link href="android-app://com.domain.name" rel="alternate"/> 
+1

ありがとう、Chetan! –

関連する問題