Bu SimpleXML kullanarak bir xml içine bir yorum etiketi eklemek mümkün mü?

2 Cevap php

Ben bir belgeyi oluşturmak için SimpleXML kullanarak ve bu gibi belgeye açıklama etiketi eklemek mümkün olup olmadığını merak ediyorum:

<root>
  <!-- some comment -->
  <value>
</root>

EDIT:

Yorum yerde belgenin ortasında yer almaktadır.

<root>
  <tag1 />
  <!-- some comment -->
  <value />
</root>

2 Cevap

Ne yazık ki, SimpleXML yorumu işlemez. Bu Mentionned oldu gibi, DOM yorumlarınızı işlemek yapar ama SimpleXML karşılaştırıldığında, basit şeyler için kullanmak için rahatsız bir tür.

Benim tavsiye: try SimpleDOM. Bu SimpleXML bir uzantısı, bu yüzden her şey aynı şekilde çalışır ve DOM malzeme ile başa çıkmak için yararlı yöntemler bir grup vardır.

Örneğin, insertComment($content, $mode) olabilir append ya da bir yorum eklemek before ya da after, belirli bir düğüm. Örneğin:

include 'SimpleDOM.php';

$root = simpledom_load_string('<root><value/></root>');

$root->value->insertComment(' mode: append ', 'append');
$root->value->insertComment(' mode: before ', 'before');
$root->value->insertComment(' mode: after ', 'after');

echo $root->asPrettyXML();

... Yankılanacak

<?xml version="1.0"?>
<root>
  <!-- mode: before -->
  <value>
    <!-- mode: append -->
  </value>
  <!-- mode: after -->
</root>

Hayır, ama görünüşe göre can use DomDocument as a workaround (german):

    $oNodeOld = dom_import_simplexml($oParent);
    $oDom = new DOMDocument();
    $oDataNode = $oDom->appendChild($oDom->createElement($sName));
    $oDataNode->appendChild($oDom->createComment($sValue));
    $oNodeTarget = $oNodeOld->ownerDocument->importNode($oDataNode, true);
    $oNodeOld->appendChild($oNodeTarget);
    return simplexml_import_dom($oNodeTarget);

Ama sonra tekrar, neden DOM doğrudan kullanmaz?