CDATA로 XML 문자열을로드하는 방법이나 CDATA 컨텐트로 요소를 쓰는 방법에 대한 좋은 답변으로 많은 질문을 보았습니다.하지만 찾을 수 없었습니다. CDATA가 이미 포함 된 XML을 편집하고 $xml->asXML()
을 사용한 후 이전 CDATA를 유지하는 방법.SimpleXMLElement를 사용하여 CDATA로 XML 편집
이미 CDATA가 포함 된 XML을 편집하고 $xml->asXML()
을 사용한 후 이전 CDATA를 유지할 수있는 방법이 있습니까? 이 시나리오에서
봐는 :
<?php
$str_xml = "<myxml><mytag><![CDATA[In this content, 8 > 2 & 1 < 9, and 10 is a 10% of 100. ]]></mytag></myxml>";
try {
echo "XML with CDATA: \n\n";
$xml = simplexml_load_string($str_xml, null, LIBXML_NOCDATA);
echo $xml->asXML() ."\n\n";
} catch(Exception $e){
echo "XML with CDATA: \n\n";
echo $e->getMessage() ."\n\n";
}
?>
이 샘플을 실행 한 후, 출력은 : 당신이 볼 수 있듯이
<?xml version="1.0"?>
<myxml><mytag>In this content, 8 > 2 & 1 < 9, and 10 is a 10% of 100. </mytag></myxml>
이 출력 XML 문자열은 더 이상하지 CDATA 태그 값이 있습니다. simplexml_load_string
을이 출력으로로드하는 데 실패하지는 않지만 기존 CDATA 태그는 없어지고 특수 문자는 해당 html 엔티티로 대체됩니다.
나는 CDATA 노드 값의 수를 포함하는 모든 XML을 읽을 수있는 방법이 있는지 알고 있어야하고, 그 $xml->asXML()
을 사용한 후, 출력 문자열은 여전히 이전 CDATA 태그 값이 포함되어 있습니다.
도움 주셔서 감사합니다.
우수! 물론 나는 CDATA 태그를 다루는 것이 특별한 옵션을 필요로한다고 생각했기 때문에 이런 식으로 다루려고 시도하지 않았다. 물론 CDATA 태그를 추가하는 것은 DOMDocument :: createCDATASection (이름을 짓기 위해)의 도움을 필요로 할 것이다. 감사!! –