سؤال

ما هي أفضل طريقة لتحليل ملف XML في PHP؟

أولاً
استخدام كائن DOM

//code
$dom = new DOMDocument();
$dom->load("xml.xml");

$root = $dom->getElementsByTagName("tag");
foreach($root as $tag)
{
$subChild = $root->getElementsByTagName("child");

// extract values and loop again if needed
}

ثانية
باستخدام طريقة simplexml_load

// code
$xml = simplexml_load_string("xml.xml");
$root = $xml->root;
foreach($root as $tag)
{
$subChild = $tag->child;
// extract values and loop again if needed
}

ملحوظة :وهذان هما اللذان أعرفهما.إذا كان هناك المزيد من ملء.

أردت معرفة الطريقة الأفضل لتحليل ملفات XML الضخمة، وأي طريقة هي الأفضل أيضًا الأسرع بغض النظر عن الطريقة التي يجب أن يتم بها تنفيذ هذه الطريقة

سيتراوح الحجم من 500 كيلو بايت إلى 2 ميجا بايت.يجب أن يكون المحلل اللغوي قادرًا على تحليل الملفات الصغيرة والكبيرة في أقل وقت مع استخدام جيد للذاكرة إن أمكن.

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

المحلول 2

لقد بدأت في استخدام XMLReader لتحليل ملفات XML.بعد إجراء القليل من البحث على Google، وجدت أنه من الأفضل طريقة تحليل ملفات XML لأنها لا تقوم بتحميل ملف XML بأكمله في الذاكرة.لنفترض أنه إذا افترضنا أن حجم ملفات XML الخاصة بي يبلغ 5 ميجابايت، فإن تحليلها باستخدام XMLReader الذي تبلغ سعته 5 ميجابايت من ذاكرتي لا يضيع.

//usage
$xml = new XMLReader();
$xml->XML($xmlString);
while($xml->read)
{
if($xml->localName == 'Something') // check if tag name equals something
{
//do something
}
}

باستخدام XML Reader، يمكننا معرفة ما إذا كانت العلامة الحالية هي علامة فتح أو علامة إغلاق والقيام بما يلزم كما هو مطلوب.

نصائح أخرى

يعتمد ذلك على المستند الذي تقوم بتمريره، ولكن XMLReader عادة ما يكون أسرع من كل من simplexml وDOM (http://blog.liip.ch/archive/2004/05/10/processing_large_xml_documents_with_php.html).شخصيًا، على الرغم من أنني لم أستخدم XMLReader مطلقًا وعادة ما أقرر ما سأستخدمه اعتمادًا على ما إذا كنت بحاجة إلى تعديله أم لا:

  • simplexml إذا كنت أقرأ مستندًا فقط
  • DOM إذا كنت أقوم بتعديل DOM وحفظه مرة أخرى

يمكنك أيضًا تحويل الكائنات بين simplexml وDOM.

إذا كنت تقوم بالمعالجة ضخم الملفات لا تحللها.يتقدم XSLT بدلاً من.سيوفر لك ذلك كميات هائلة من الذاكرة ووقت المعالجة.

أفضّل simplexml_load_string لسهولة الاستخدام.قد تعتمد سرعة المعالجة على تنسيق ملف XML إذا كان الطريقتان تستخدمان طريقتين مختلفتين لتحليل الملف - جرب ذلك على ملفاتك الخاصة وانظر أيهما أفضل بالنسبة لك.

يتم التعامل مع كل XML بواسطة simpleXML في PHP الآن عندما أقوم بالتطوير.يتم توسيعه بسهولة ويتم استبدال الأساليب عند الحاجة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top