سؤال

وأستخدمه Xerces-ج في مشروعي، وأود أن إنشاء DOMElement احد دون الحاجة إلى إنشاء DOMDocument جديد كليا. شيء من هذا القبيل ممكن؟

هل كانت مفيدة؟

المحلول

وأنا لم أر هذه الطريقة. AFAIK في DOMDocument يتصرف باسم "تجمع الذاكرة" ويتم إنشاء جميع العناصر في هذا التجمع. في Xerces مستندات نرى:

<اقتباس فقرة>   

والكائنات التي أنشئت من قبل DOMDocument :: createXXXX   ويمكن للمستخدمين استدعاء الدالة اطلاق سراح () للإشارة إلى الإفراج عن أي العقد المعزول. حين تطلق عقدة اليتامى، كما سيتم الإفراج عن الأطفال المرتبطين بها. والوصول إلى عقدة صدر يؤدي إلى سلوك غير متوقع. في نهاية المطاف سوف يتم الافراج هذه العقد اليتامى، إن لم يكن قد فعلت ذلك، عندما يتم تحرير وثيقة صاحبها

ولقد عملت تغلب على هذا الموقف عن طريق الحفاظ على وحة الصفر DOMDocument حول واستخدامها لخلق شظايا أو العقد اليتيم واعتمادها في وثائق وجهتهم عندما أنا مستعد. منها مثلا.

// Create a fragment holding two sibling elements. The first element also has a child.
DOMDocumentFragment* frag = scratchDom->createDocumentFragment();
DOMNode* e1 = frag->appendChild( frag->getOwnerDocument()->createElement("e1") );
e1->appendChild( e1->getOwnerDocument()->createElement("e1-1") );
DOMNode* e2 = frag->appendChild( frag->getOwnerDocument()->createElement("e2") );
...
// Paste the contents of the fragment into a "parent" node from another document
DOMNode* parentFromOtherDom = ...;
parentFromOtherDom->appendChild( parentFromOtherDom->getOwnerDocument()->adopt(frag) );
scratchDom->removeChild(frag);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top