我有一個XML文件, 我想打開它,從$ _ POST輸入的值編輯某些CDATA節點,並將其保存爲同一文件, 我讀過一些在線文檔和此處結束, 有人請建議這樣做的一個很好的方式...simplexml的編輯CDATA節點
regardsh
我有一個XML文件, 我想打開它,從$ _ POST輸入的值編輯某些CDATA節點,並將其保存爲同一文件, 我讀過一些在線文檔和此處結束, 有人請建議這樣做的一個很好的方式...simplexml的編輯CDATA節點
regardsh
SimpleXML
不作CDATA元素默認訪問。您可以告訴simplexml跳過它們(默認)或讀取它們(請參閱:read cdata from a rss feed)。如果你閱讀它們,它們是標準文本值,所以它們會與其他文本節點合併。
Document Object ModelDocs提供了更多的控制,它提供了從標準文本節點模型DOMText
擴展的DOMCdataSection
。
即使這是一個不同的PHP庫(DOM vs. SimpleXML),它們都是相互兼容的。例如,SimpleXMLElement
可以通過使用dom_import_simplexml
函數轉換爲DOMElement
。
如果您發佈了一些代碼,那麼您應該很容易找出如何訪問要修改的CDATA部分。請提供一些演示XML數據,以便示例更具說話性。
由於最近我有同樣的問題,我想讓人們也看到一些代碼,因爲鏈接的例子只能添加新的CDATA部分,但不要刪除舊的。所以「我的」解決方案從上述代碼示例合併,並刪除舊的CDATA節點。
// get DOM node
$node = dom_import_simplexml($mySimpleXmlElement);
// remove existing CDATA ($node->childNodes->item(1) does not seem to work)
foreach($node->childNodes as $child) {
if ($child->nodeType == XML_CDATA_SECTION_NODE) {
$node->removeChild($child);
}
}
// add new CDATA
$no = $node->ownerDocument;
$node->appendChild($no->createCDATASection($myNewContent));
// print result
echo $xml->asXML();
現在我已經找到了一種方法來添加CDATA與任何庫或方法可能會在這裏http://coffeerings.posterous.com/php-simplexml-and-cdata。 thnx爲你的幫助。 – pahnin
和thanx的解釋 – pahnin
Upvote appreceated;) - 您提到的鏈接是使SimpleXML讀取CDATA節(另請參閱:[從rss提要讀取cdata](http://stackoverflow.com/questions/8020181/)讀CDATA-從-A-RSS源/ 8020274#8020274))。我想知道是否需要專門編輯CDATA部分(如果是這樣,請添加一些示例XML)或只是(合併)的文本對您而言是好的。 – hakre