XML DOM নোড ট্রে ব্রেট্রভিং

ট্রেভার্স (Traverse) এর অর্থ হল নোড ট্রে ব্রেট্রভিং

নোড ট্রে ব্রেট্রভিং

আপনি সত্যিই XML ডকুমেন্টটি পার্সিং করতে হবে, যেমন: যখন আপনি প্রত্যেক ইলেমেন্টের মান উপস্থাপন করতে চান।

এই প্রক্রিয়াকে 'নোড ট্রে ব্রেট্রভিং' বলা হয়

এই উদাহরণটি সব সাব-নোডসকে পার্সিং করে তাদের নাম ও মান দেখায়:

ইনস্ট্যান্স

<!DOCTYPE html>
<html>

<script> var x, i ,xmlDoc; var txt = ""; var text = "" + "雅舍谈吃" + "梁实秋" + "2013" + ""; parser = new DOMParser(); xmlDoc = parser.parseFromString(text,"text/xml"); // documentElement 始终表示根节点 x = xmlDoc.documentElement.childNodes; for (i = 0; i < x.length ;i++) { txt += x[i].nodeName + ": " + x[i].childNodes[0].nodeValue + "
"; } document.getElementById("demo").innerHTML = txt; </script>

আপনার নিজেই প্রয়াস করুন

例子解释:

  1. 将 XML 字符串加载到 xmlDoc
  2. 获取根元素的子节点
  3. 输出每个子节点的名称,以及其文本节点的节点值

浏览器在 DOM 解析方面的差异

所有现代浏览器都支持 W3C DOM 规范。

但是,浏览器之间存在一些差异。一个重要的区别是:

它们处理空白和换行的方式

DOM - 空白和换行

XML 通常在节点之间包含换行符或空白字符。当使用记事本等简单编辑器编辑文档时,通常会出现这种情况。

下面的例子(由记事本编辑)在每行之间包含 CR/LF(换行符),并且每个子节点前面有两个空格:


  雅舍谈吃
  梁实秋
  江苏文艺出版社
  2013
  35
  9787539962771

Internet Explorer 9 及更早版本不会将空白或新行视为文本节点,而其他浏览器则会这样做。

এই উদাহরণটি বইটির (books.xml) প্রধান নোডটির (সাব-নোডস) সংখ্যা দেখাবে। IE9 এবং তার পূর্ববর্তী সংস্করণগুলি 6টি সাব-নোডস দেখাবে, কিন্তু IE10 এবং তার পরবর্তী সংস্করণ এবং অন্যান্য ব্রাউজারগুলি 9টি সাব-নোডস দেখাবে:

ইনস্ট্যান্স

function myFunction(xml) {
var xmlDoc = xml.responseXML;
    x = xmlDoc.documentElement.childNodes;
    document.getElementById("demo").innerHTML =
    "সাব-নোড সংখ্যা: " + x.length;
}

আপনার নিজেই প্রয়াস করুন

PCDATA - পার্স করা চরিত্র ডেটা (Parsed Character Data)

XML পার্সার, সাধারণত, XML ডকুমেন্টের সকল লেখা পার্স করে。

XML ইলেকট্রনমেন্ট পার্স করা সময়, XML ট্যাগের মধ্যবর্তী লেখাও পার্স করা হবে:

<message>এই লেখাও পার্স করা হবে</message>

পার্সার এই কাজ করে, কারণ XML ইলেকট্রনমেন্টগুলি অন্যান্য ইলেকট্রনমেন্টগুলি ধারণ করতে পারে, যেমন এই উদাহরণে, <name> ইলেকট্রনমেন্টটি অন্য দুটি ইলেকট্রনমেন্ট (first এবং last) ধারণ করে:

<name><first>Bill</first><last>Gates</last></name>

পার্সার, এটা বিভক্ত করবে:

<name>
  <first>Bill</first>
  <last>Gates</last>
</name>

“পার্স করা চরিত্র ডেটা” (PCDATA) এই পরিভাষা, XML পার্সারকে পার্স করা থাকা কনটেন্টকে বর্ণনা করার জন্য ব্যবহৃত হয়。

CDATA - অনপার্স চরিত্র ডেটা (Unparsed Character Data)

CDATA - XML পার্সারকে পার্স করা হবেনা থাকা কনটেন্টকে বর্ণনা করার জন্য পরিভাষা ব্যবহৃত হয়。

"<" এবং "&" ইত্যাদি চিহ্নগুলি XML ইলেকট্রনমেন্টে অবৈধ।

"<" ত্রুটি উদ্ভব করবে, কারণ পার্সার তাকে নতুন ইলেকট্রনমেন্টের ভাবে ব্যাখ্যা করবে。

"&" ত্রুটি উদ্ভব করবে, কারণ পার্সার তাকে চরিত্র ইন্টারপ্রেটারের ভাবে ব্যাখ্যা করবে。

কিছু লেখা (যেমন JavaScript কোড) অনেক চিহ্ন "<" বা "&" চিহ্ন।ত্রুটি এড়াতে, স্ক্রিপ্ট কোডকে CDATA হিসাবে নির্ধারণ করা যেতে পারে。

CDATA অংশের সকল কনটেন্টকে পার্সার অবহেলা করা হবে。

CDATA অংশ "<![CDATA[" শুরু, যেমন "]]>" শেষ:

<script>
<![CDATA[
function matchwo(a,b) {
    if (a < b && a < 0) {
        return 1;
    else {
        return 0;
    }
}
]]>
</script>

在上面的示例中,解析器会忽略 CDATA 部分内的所有内容。

关于 CDATA 部分的注意事项:

CDATA 部分不能包含字符串 "]]>"。不允许嵌套 CDATA 部分。

标记 CDATA 部分结尾的 "]]>" 不能包含空格或换行符。