XML DOM ຢືອບຜູ້ລົງຄະແນນ

ຢືອບ (Traverse) ແມ່ນການຢືອບຜູ້ລົງຄະແນນຮາກຮ່າງ.

ຢືອບຜູ້ລົງຄະແນນ

ທ່ານຈະຕ້ອງການຢືອບແບບ XML ຊັກຊວນ ເຊັ່ນ: ເມື່ອທ່ານຕ້ອງການເອົາຄວາມລວມຂອງແຕ່ລະຫົວໜ້າ.

ຂະບວນການນີ້ເອີ້ນວ່າ “ຢືອບຜູ້ລົງຄະແນນຮາກຮ່າງນັກວຽກ”

ບົດຢ່າງນີ້ການຢືອບຜູ້ລົງຄະແນນຂອງ <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 ແລະກ່ອນຈະບໍ່ຄົ້ນຫາບັນຊີຄວາມຄິດຄິວຍິບຍັງແລະການລະບາຍຄືກັນທີ່ບໍ່ມີຄວາມຄິດຄິວຍິບຍັງແລະຜູ້ຄຸ້ມຫຼາຍຈະເຮັດແນວນັ້ນ:

ບົດຢ່າງນີ້ຈະສະແດງຈຳນວນຂອງຜູ້ລວມຂອງປະກອບອີກບັນຊີສາຍອີກ ບັນຊີ 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 ສິບສິນລະຫວ່າງສິບສິນ.

<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 ຄົ້ນຄວ້າ.

"<ອີກ "&ຄຳຕະກຳ " ແລະ "

"<" ຈະການສົ່ງຜິດພາດ ຍ້ອນຜູ້ຄັດພິມີ້ຈະບັນທຶກວ່າມັນເປັນສິບສິນລະຫວ່າງ.

"&" ຈະການສົ່ງຜິດພາດ ຍ້ອນຜູ້ຄັດພິມີ້ຈະບັນທຶກວ່າມັນເປັນສິບສິນລະຫວ່າງ.

ບາງຄຳຕະກຳ (ເຊັ່ນ 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 部分结尾的 "]]>" 不能包含空格或换行符。