XML DOM အပိုင်းပေါင်း အဆိုင်အရပ်

အပိုင်းပေါင်း (Traverse) ဟူသည် အပိုင်းပေါင်း အဆိုင်အရပ် ချိန်ရှည်ကြည့်ရန် ဖြစ်သည်

အပိုင်းပေါင်း အဆိုင်အရပ်

သင့်လိုအပြီးသတ် သတ္တုပုံကို တစ်ခုခုချင်း ခွဲခြားချိန်လည်း ရှိသည်

ဤအပြုအမူကို “အပိုင်းပေါင်း အဆိုင်အရပ်” ဟု ခေါ်သည်

ဤအစုအဖွဲ့သည် <book> အပိုင်းတို့၏ အပိုင်းစတွဲများကို ချိန်ရှည်ပြီး သူတို့၏ အမည်နှင့် အကျုံးများကို ပြပေးသည်

实例

<!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(换行符),并且每个子节点前面有两个空格:

<book>
  <title>雅舍谈吃</title>
  <author>梁实秋</author>
  <press>江苏文艺出版社</press>
  <year>2013</year>
  <price>35</price>
  <ISBN>9787539962771</ISBN>
</book>

Internet Explorer 9 နှင့် အရှိန်တက်သည်မှာ ပုံမှန်အထိမ်းအမှတ်များနှင့် အချိန်ချိန်များ အရွယ်အစားအရ အချိန်ချိန်အရွယ်အစား မဖြစ်ပါ၊ သို့သော် အခြား ဘာသာပြန်လည်အသုံးပြုသည်များမှာ အချိန်ချိန်အရွယ်အစား ဖြစ်ပါသည်။

အမှတ် 1 ပုံမှာ လက်ခံသည့်အရာဝတ္တု (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 标记之间的文本:

此文本也会被解析

解析器执行此操作是因为 XML 元素可以包含其他元素,如本例所示,其中 元素包含另外两个元素(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) {
        1;
    }
        return 0; - ပြန်လည်သတင်း 0;
    }
}
]]>
</script>

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

关于 CDATA 部分的注意事项:

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

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