2009-12-03 12 views
5

मैंने PHP के सरल XML का उपयोग करके एक XML फ़ाइल बनाई है, फ़ाइल को सहेजा है। फॉपेन का उपयोग करके और सामग्री को प्रिंट करके PHP में फ़ाइल खोलते समय। मेरी एक्सएमएल लगता है कि यह: (नीचे देखें)PHP SimpleXML नई लाइन

<?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

आप DOMDocument की formatOutput संपत्ति का उपयोग कर ऐसा कर सकते हैं।

इस तरह अपने एक्सएमएल सहेजें बजाय, अपने 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 ऑब्जेक्ट से DOMElement/DOMDocument ऑब्जेक्ट में डोम प्रस्तुति भी आयात कर सकते हैं और प्रारूप आउटपुट प्रॉपर्टी को DOMDocument ऑब्जेक्ट पर सेट कर सकते हैं। इस तरह आपको xml स्ट्रिंग को फिर से पार्स करने की आवश्यकता नहीं है। और VolkerK

+1

'प्रारूप आउटपुट' के साथ समस्या देखें यह केवल तभी काम करेगा यदि आपके पास कोई टेक्स्ट नोड्स नहीं है। IOW, यदि दो नोड्स के बीच एक लाइनबैक भी है, तो यह आउटपुट को सुंदर बनाने की कोशिश नहीं करेगा। –

2

इसे "सुंदर प्रिंटिंग" कहा जाता है और SimpleXML ऐसा नहीं करता है। यदि आप वेब पर स्टैक ओवरफ़्लो और अन्यत्र खोजते हैं तो आपको कस्टम समाधान मिलेंगे जो ऐसा करते हैं।

सुंदर प्रिंटिंग दृश्यता के लिए अच्छा है लेकिन मैं उस प्रारूप में दस्तावेज़ों को सहेजने की अनुशंसा नहीं करता हूं।

आप अभी भी एक सुंदर-प्रिंटर के लिए देख रहे हैं, तो आप SimpleDOM के asPrettyXML()

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

गूंज "\ n" की कोशिश कर सकते हैं; xml

ob_start() में नई पंक्ति के लिए; echo ' '। "\ n";?>