2011-08-17 11 views
7

साथ पीएचपी के साथ एक एक्सएमएल फ़ाइल को संलग्न करने के लिए मैं एक एक्सएमएल फ़ाइल जो इस तरह दिखता है:कैसे अधिमानतः SimpleXML

<?xml version="1.0" encoding="utf-8"?> 
<data> 
    <config> 
    </config> 

    <galleries> 
     // We have loads of these <gallery> 
     <gallery> 
      <name>Name_Here</name> 
      <filepath>filepath/file.txt</filepath> 
      <thumb>filepath/thumb.png</thumb> 
     </gallery> 
    </galleries> 
</data> 

मैं अपने ऊपर एक्सएमएल के लिए एक और < गैलरी संलग्न करने का तरीका पता लगाने के लिए> कोशिश कर रहे हैं फ़ाइल। मैंने सरल एक्सएमएल का उपयोग करने की कोशिश की लेकिन इसे काम नहीं कर सका, इसलिए मैंने इस answer के साथ-साथ स्टैक ओवरफ्लो पर bunch की कोशिश की। लेकिन बस इसे काम करने के लिए नहीं मिल सकता है।
मैं आसानी से एक एक्सएमएल फ़ाइल से पढ़ सकता हूं और मुझे आवश्यक सारी जानकारी प्राप्त कर सकता हूं, लेकिन मुझे इसमें गैलरी टैग जोड़ने में सक्षम होना चाहिए, नीचे दिया गया कोड काम नहीं करता है और जब ऐसा होता है, तो मैं केवल 1 तत्व डाल सकता हूं, और यह इसे 3 बार सम्मिलित करता है, मैं इसे समझ नहीं पा रहा हूं।

$data = 'xml/config.xml'; 
// Load document 
$xml = new DOMDocument; 
$xml->load($data); #load data into the element 

$xpath = new DOMXPath($xml); 
$results = $xpath->query('/data/galleries'); 
$gallery_node = $results->item(0); 

$name_node = $xml->createElement('name'); 
$name_text = $xml->createTextNode('nametext'); 

$name_node = $name_node->appendChild($name_text); 

$gallery_node->appendChild($name_node); 

echo $xml->save($data); 

मेरे पास इस पर असफल प्रयासों का भार था, यह इतना आसान होना चाहिए। असल में मैं एक ही फाइल (xml/config.php) पर बच्चों के नाम फ़ाइलपैथ और अंगूठे के साथ एक गैलरी जोड़ना चाहता हूं।

जैसा कि मैंने कहा, मुझे इसे काम करने के लिए मिला है, लेकिन इसकी अपरिवर्तित है और इसमें गैलरी टैग नहीं है।

प्रश्न
मैं एक < गैलरी> (बच्चों के साथ) के ऊपर एक्सएमएल फ़ाइल में कैसे डालूँ?
अधिमानतः भी SimpleXML

उत्तर

14

का उपयोग कर SimpleXML के साथ, आप addChild() विधि का उपयोग कर सकते हैं।

$file = 'xml/config.xml'; 

$xml = simplexml_load_file($file); 

$galleries = $xml->galleries; 

$gallery = $galleries->addChild('gallery'); 
$gallery->addChild('name', 'a gallery'); 
$gallery->addChild('filepath', 'path/to/gallery'); 
$gallery->addChild('thumb', 'mythumb.jpg'); 

$xml->asXML($file); 

ध्यान रखें कि SimpleXML "प्रारूप" आप के लिए एक्सएमएल, हालांकि एक अस्वरूपित SimpleXML प्रतिनिधित्व से जा रहा नहीं होंगे बड़े करीने से इंडेंट करने के लिए XML एक जटिल कदम नहीं है और बहुत सारे सवालों का यहाँ में शामिल है ।

+0

यह काम करता है! लेकिन यह मेरे एक्सएमएल में इसे 3 बार आउटपुट करता है, कोई विचार यह क्यों करेगा? यह के 3 सेट और उसी लाइन पर बच्चों को आउटपुट करता है, यह मेरे उपरोक्त स्क्रिप्ट के साथ भी किया गया है? कोई सुराग? – Anil

+2

आप शायद लूप में कुछ गलत कर रहे हैं। जो कुछ भी आपने दिखाया है, या मैंने दिया है, गैलरी तत्व को तीन बार दोहराएगा। – salathe

संबंधित मुद्दे