2010-12-21 2 views
1

변경 사항을 적용하는 기존 XML에서 XML을 작성하는 웹 페이지가 있습니다. 새로운 XML 파일을 미리보기로 textarea에 출력하고 싶습니다. 원본 XML에 존재했던 모든 노드를 원본 XML에 문제가 없었던 올바른 공백/서식 (들여 쓰기 및 줄 바꿈)과 함께 표시하지만 모든 새 노드는 들여 쓰기없이 한 줄에 모두 표시됩니다. 예 : 나는 또한 XMLS를 조작하는 SimpleXML을 사용하고XML을 공백 형식으로 표시하려면 어떻게해야합니까?

$dom = new DOMDocument('1.0'); 
$dom->preserveWhiteSpace = true; 
$dom->formatOutput = true; 
$dom->loadXML($xml->asXML()); 
file_put_contents($file, $dom->saveXML()); 
echo "<textarea cols='100' rows='40'>".file_get_contents($file)."</textarea>"; 

: 여기

<original parent node> 
    <original child>value</original child> 
</original parent node> 
<original parent node> 
    <new child>value</new child><new child>value</new child><new child>value</new child><new child>value</new child><new child>value</new child><new child>value</new child> 
</original parent node> 

글을 다시 XML에서 읽는 코드입니다. 새 노드에 대해 적절한 공백 문자를 표시하려면 어떻게합니까?

+0

와우. loadXML/asXML, file_put_contents/file_get_contents ... 그게 뭐 좋은데? 관련성 :'$ xml'이란 무엇입니까? – Tomalak

답변

4

나는 preserveWhiteSpace이 해제 된 경우 formatOutput에만 작동 것으로 나타났습니다 :

$dom = new DOMDocument; 
$dom->preserveWhiteSpace = false; 
$dom->formatOutput = true; 
$dom->loadXML($xml); 
echo $dom->saveXML(); 
+0

정말 잘 해줘서 고마워! – jreed121

+0

남자 4 번 라인에 붙어있어서 에러가납니다 : Notice : Undefined variable : xml in C : \ wamp \ www \ 3ace \ index.php 88 번 라인 –

0

봅니다 :

echo "<textarea cols='100' rows='40'>".htmlspecialchars($xml->asXML())."</textarea>"; 
1

이 추가, 나를 위해 작동합니다.

echo '<script src="https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js"></script>'; 
echo "<br/> <pre class=\"prettyprint\" >". htmlentities($dom->saveXML($dom->firstChild->firstChild->firstChild))."</pre>"; 

당신은 더 많은 정보를 원하시면 $dom->firstChild->firstChild->firstChild을 삭제할 수 있습니다.

관련 문제