DOM في PHP

معالج DOM المدمج يجعل معالجة وثائق XML في PHP ممكنة.

ما هو DOM؟

يقدم W3C DOM مجموعة معياري من العناصر للوثائق HTML و XML، بالإضافة إلى واجهات معياري لاستقبال وتعامل مع هذه الوثائق.

يُقسم W3C DOM إلى أجزاء مختلفة (Core، XML و HTML) وأعلى مستويات (DOM Level 1/2/3):

  • Core DOM - يعرف مجموعة معياري من العناصر لأي وثيقة مكتوبة بشكل منظم
  • XML DOM - يعرف مجموعة معياري من العناصر للوثائق XML
  • HTML DOM - يعرف مجموعة معياري من العناصر للوثائق HTML

如果您希望学习更多有关 XML DOM 的知识,请访问我们的 XML DOM 教程

تحليل XML

للقراءة والتحديث - إنشاء وتعامل مع وثيقة XML، تحتاج إلى معالج XML.

هناك نوعان رئيسيان من معالجات XML:

  • معالج يعتمد على الشجرة:ي看点 وثيقة XML كشجرة. يتحليله كله ويقدم واجهة API لاستقبال العناصر مثل نموذج وثيقة XML (DOM).
  • معالج يعتمد على الأحداث:ي看点 وثيقة XML كسلسلة من الأحداث. عند حدوث حدث معين، يقوم المعالج بتوليد دالة لمعالجته.

معالج DOM هو معالج يعتمد على الشجرة.

انظر إلى جزء وثيقة XML التالي:

<?xml version="1.0" encoding="ISO-8859-1"?>
<from>جون</from>

ي看点 XML يشبهه كشجرة:

  • المستوى 1: وثيقة XML
  • المستوى 2: العنصر الأساسي: <from>
  • المستوى 3: عناصر النص: "جون"

التثبيت

وظائف معالج DOM XML هي جزء من نواة PHP. يمكنك استخدام هذه الوظائف دون الحاجة إلى تثبيت.

ملف XML

سنستخدم في مثالنا الملف التالي من XML:

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>جورج</to>
<from>جون</from>
<heading>تذكير</heading>
<body>لا تنسى الاجتماع!</body>
</note>

تحميل وإخراج XML

نحتاج إلى تحفيز معالج XML، تحميل XML، ثم إخراجه:

例子

<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load("note.xml");
print $xmlDoc->saveXML();
?>

以上代码的输出:

جورج جون تذكير لا تنسى الاجتماع!

إذا كنت تنظر في رمز المصدر في نافذة المتصفح، سترى ما يلي من HTML:

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>جورج</to>
<from>جون</from>
<heading>تذكير</heading>
<body>لا تنسى الاجتماع!</body>
</note>

上面的例子创建了一个 DOMDocument-Object,并把 "note.xml" 中的 XML 载入这个文档对象中。

saveXML() 函数把内部 XML 文档放入一个字符串,这样我们就可以输出它。

循环 XML

我们要初始化 XML 解析器,加载 XML,并循环 <note> 元素的所有元素:

例子

<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load("note.xml");
$x = $xmlDoc->documentElement;
foreach ($x->childNodes AS $item)
  {
  print $item->nodeName . " = " . $item->nodeValue . "<br />";
  }
?>

以上代码的输出:

#text = 
to = George
#text = 
from = John
#text = 
heading = Reminder
#text = 
body = Don't forget the meeting!
#text =

在上面的例子中,您看到了每个元素之间存在空的文本节点。

当 XML 生成时,它通常会在节点之间包含空白。XML DOM 解析器把它们当作普通的元素,如果您不注意它们,有时会产生问题。

如果您希望学习更多有关 XML DOM 的知识,请访问我们的 XML DOM 教程