2009-12-03 3 views
5

나는 PHP의 간단한 XML을 사용하여 XML 파일을 만들고 파일을 저장했다. fopen을 사용하여 PHP에서 파일을 열고 내용을 인쇄 할 때. 내 XML은 다음과 같습니다. (아래 참조)PHP SimpleXML new line

<?xml version="1.0" encoding="UTF-8"?> 
<home><orderList><delivery_cost>0.00</delivery_cost><delivery_surname>TEST</delivery_surname><delivery_postcode>1234</delivery_postcode><status>1</status></orderList></home> 

xml 파일을 들여 쓰기하고 각 요소의 새 줄을 찾고 싶습니다. 아무도 이것을하는 방법을 아는가?

감사

+0

어떻게 XML 파일을 저장 하시겠습니까? –

답변

10

당신은 DOMDocumentformatOutput 속성을 사용하여이 작업을 수행 할 수 있습니다.

이처럼 XML을 저장하는 대신, 당신의 XML을 추정하는 것은 $yourXML라는 변수에, 당신은 $xmlFilePath에 파일로 저장하려면 :

$dom = new DOMDocument(); 
$dom->loadXML($yourXML); 
$dom->formatOutput = true; 
$formattedXML = $dom->saveXML(); 

$fp = fopen($xmlFilePath,'w+'); 
fwrite($fp, $formattedXML); 
fclose($fp); 

코드 here에서 적응.

+0

오, 니스! DOMDocument가이 작업을 수행 할 수 있는지 잘 모릅니다. – ChronoFish

+0

SimpleXML 개체의 dom 표현을 DOMElement/DOMDocument 개체로 가져올 수 있으며 DOMDocument 개체의 formatOutput 속성을 설정할 수도 있습니다. 이렇게하면 xml 문자열을 다시 구문 분석 할 필요가 없습니다. VolkerK

+1

을 참조하십시오. 'formatOutput'문제는 다음과 같습니다. 텍스트 노드가없는 경우에만 작동합니다. IOW, 두 노드 사이에 하나의 줄 바꿈이있는 경우 출력을 가장 잘 나타내려고하지 않습니다. –

2

"예쁜 인쇄"라고하며 SimpleXML은 그렇게하지 않습니다. 스택 오버플로 및 웹의 다른 곳에서 검색하는 경우이를 수행하는 사용자 정의 솔루션을 찾을 수 있습니다.

예쁘게 인쇄하는 것이 바람직하지만 형식의 문서는 저장하지 않는 것이 좋습니다.

여전히 꽤 - 프린터를 찾고 있다면, 당신은 SimpleDOM의 asPrettyXML() "N \"

include 'SimpleDOM.php'; 

$home = simpledom_load_string('<?xml version="1.0" encoding="UTF-8"?> 
<home><orderList><delivery_cost>0.00</delivery_cost><delivery_surname>TEST</delivery_surname><delivery_postcode>1234</delivery_postcode><status>1</status></orderList></home>'); 

echo $home->asPrettyXML(); 
-3

에코를 시도 할 수 있습니다; xml의 ​​새 줄을 입력하십시오.

ob_start(); 에코 ' '. "\ n";?>