सलाथ के जवाब ने मेरी मदद की, लेकिन जब से मैंने SimpleXMLElement की addChild विधि का उपयोग किया, तो मैंने बच्चों को पहले बच्चे के रूप में अधिक पारदर्शी बनाने के लिए एक समाधान मांगा। समाधान है कि डोम आधारित कार्यक्षमता लेने के लिए और SimpleXMLElement का एक उपवर्ग में इसे छिपाने के लिए है:
$xml = simplexml_load_file($inputFile, 'SimpleXMLElementEx');
अब आप insertChildFirst कॉल कर सकते हैं:
class SimpleXMLElementEx extends SimpleXMLElement
{
public function insertChildFirst($name, $value, $namespace)
{
// Convert ourselves to DOM.
$targetDom = dom_import_simplexml($this);
// Check for children
$hasChildren = $targetDom->hasChildNodes();
// Create the new childnode.
$newNode = $this->addChild($name, $value, $namespace);
// Put in the first position.
if ($hasChildren)
{
$newNodeDom = $targetDom->ownerDocument->importNode(dom_import_simplexml($newNode), true);
$targetDom->insertBefore($newNodeDom, $targetDom->firstChild);
}
// Return the new node.
return $newNode;
}
}
सब के बाद, SimpleXML जो तत्व वर्ग का उपयोग करने के निर्दिष्ट कर सकते हैं पहले बच्चे के रूप में नए बच्चे को सम्मिलित करने के लिए किसी भी तत्व पर। विधि नए तत्व को SimpleXML तत्व के रूप में लौटाती है, इसलिए इसका उपयोग addChild के समान है। निस्संदेह एक insertChild विधि बनाने के लिए आसानी से संभव होगा जो आइटम को पहले सम्मिलित करने के लिए एक सटीक तत्व निर्दिष्ट करने की अनुमति देता है, लेकिन चूंकि मुझे अभी इसकी आवश्यकता नहीं है, इसलिए मैंने फैसला नहीं किया।
मुझे यकीन नहीं है कि आप कर सकते हैं। प्रलेखन से, ऐसा लगता है कि SimpleXML ** वास्तव में ** सरल हेरफेर के लिए है। – MvanGeest
क्या मैं किसी और तरह से सीएस स्टोर नहीं कर सकता, उन्हें हटा सकता हूं, बी जोड़ सकता हूं, और उस अस्थायी स्थान से सीएस वापस जोड़ सकता हूं? मैं PHP में बहुत अच्छी तरह से नहीं जानता .... –