XML DOM ਨੋਡ ਟ੍ਰੀ ਦਾ ਪਰਿਭਾਸ਼ਣ

ਪਰਿਭਾਸ਼ਣ (Traverse) ਦਾ ਮਤਲਬ ਨੋਡ ਟ੍ਰੀ ਦਾ ਪਰਿਭਾਸ਼ਣ ਕਰਨਾ ਹੈ

ਨੋਡ ਟ੍ਰੀ ਦਾ ਪਰਿਭਾਸ਼ਣ

ਤੁਸੀਂ ਅਕਸਰ XML ਦਸਤਾਵੇਜ਼ ਦਾ ਪਰਿਭਾਸ਼ਣ ਕਰਨਾ ਹੁੰਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ ਤੁਸੀਂ ਹਰੇਕ ਤੱਤ ਦਾ ਮੁੱਲ ਉਠਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ ਤਾਂ。

ਇਹ ਪ੍ਰਕਿਰਿਆ ‘ਨੋਡ ਟ੍ਰੀ ਦਾ ਪਰਿਭਾਸ਼ਣ’ ਕਿਹਾ ਜਾਂਦਾ ਹੈ

ਇਹ ਉਦਾਹਰਣ ਬੁੱਕ> ਦੇ ਸਾਰੇ ਉਪ ਨੋਡਾਂ ਦਾ ਪਰਿਭਾਸ਼ਣ ਕਰਦਾ ਹੈ ਅਤੇ ਉਨ੍ਹਾਂ ਦਾ ਨਾਮ ਅਤੇ ਮੁੱਲ ਦਿਸਾਉਂਦਾ ਹੈ:

مثال

<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var x, i ,xmlDoc;
var txt = "";
var text = "<book>" +
"<title>雅舍谈吃</title>" +
"<author>梁实秋</author>" +
"<year>2013</year>" +
"</book>";
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 + "<br>";
}
document.getElementById("demo").innerHTML = txt;
</script>
</body>
</html>

کام کریں ساتھ!

ਉਦਾਹਰਣ ਵਿਆਖਿਆ:

  1. XML ਚਿੱਤਰ ਨੂੰ xmlDoc ਵਿੱਚ
  2. ਰੂਟ ਐਲੀਮੈਂਟ ਦੇ ਉਪ ਨੋਡ ਪ੍ਰਾਪਤ ਕਰੋ
  3. ਹਰੇਕ ਉਪ ਨੋਡ ਦਾ ਨਾਮ ਅਤੇ ਉਸ ਦੇ ਟੈਕਸਟ ਨੋਡ ਦੇ ਨੋਡ ਮੁੱਲ ਪ੍ਰਵਾਹਿਤ ਕਰੋ

ਬਰਾਉਜ਼ਰਾਂ ਵਿਚਕਾਰ DOM ਪਾਰਸਿੰਗ ਦੀਆਂ ਵਿਭਿੰਨਤਾਵਾਂ

ਸਾਰੇ ਆਧੁਨਿਕ ਬਰਾਉਜ਼ਰ ਵੈੱਸੀ ਡੀਓਐਮ ਸ਼ਾਸਨਾਂ ਨੂੰ ਸਮਰਥਨ ਕਰਦੇ ਹਨ。

ਪਰ ਬਰਾਉਜ਼ਰਾਂ ਵਿਚਕਾਰ ਕੁਝ ਵਿਭਿੰਨਤਾਵਾਂ ਹਨ। ਇੱਕ ਮਹੱਤਵਪੂਰਣ ਵਿਭਿੰਨਤਾ ਇਹ ਹੈ:

ਉਨ੍ਹਾਂ ਨੂੰ ਖਾਲੀ ਜਗ੍ਹਾਵਾਂ ਅਤੇ ਨਵੀਂ ਲਾਈਨ ਦੇ ਤਰੀਕੇ ਨਾਲ ਸਮਝਦੇ ਹਨ

DOM - ਖਾਲੀ ਜਗ੍ਹਾਵਾਂ ਅਤੇ ਨਵੀਂ ਲਾਈਨ

XML ਆਮ ਤੌਰ 'ਤੇ ਨੋਡਾਂ ਦਰਮਿਆਨ ਕ੍ਰੈਲਾਫ਼/ਐਲਫ਼ ਜਾਂ ਖਾਲੀ ਚਿੱਤਰਾਂ ਸ਼ਾਮਿਲ ਕਰਦਾ ਹੈ। ਜਦਕਿ ਜਿਵੇਂ ਨੋਟਬੁੱਕ ਵਰਗੇ ਸਰਲ ਸੰਪਾਦਕਾਂ ਦੁਆਰਾ ਦਸਤਾਵੇਜ਼ ਸੰਪਾਦਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਤਾਂ ਆਮ ਤੌਰ 'ਤੇ ਇਹ ਹੋਇਆ ਹੁੰਦਾ ਹੈ。

ਇਸ ਉਦਾਹਰਣ ਵਿੱਚ (ਨੋਟਬੁੱਕ ਦੁਆਰਾ ਸੰਪਾਦਿਤ) ਹਰ ਲਾਈਨ ਵਿਚਕਾਰ ਕ੍ਰੈਲਾਫ਼/ਐਲਫ਼ (ਨਵੀਂ ਲਾਈਨ ਸੰਕੇਤਕ) ਸ਼ਾਮਿਲ ਹੁੰਦੇ ਹਨ ਅਤੇ ਹਰ ਉਪ ਨੋਡ ਦੇ ਸਾਹਮਣੇ ਦੋ ਖਾਲੀ ਜਗ੍ਹਾਵਾਂ ਹੁੰਦੀਆਂ ਹਨ:

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

ਇੰਟਰਨੈੱਟ ਐਕਸਪਲੋਰਰ 9 ਅਤੇ ਪਹਿਲੇ ਸ਼ਾਮਿਲ ਵਰਜਨਾਂ ਵਿੱਚ ਖਾਲੀ ਜਾਂ ਨਵੀਂ ਲਾਈਨ ਨੂੰ ਟੈਕਸਟ ਨੋਡ ਦੇ ਰੂਪ ਵਿੱਚ ਨਹੀਂ ਸਮਝਦੇ ਹਨ ਜਦਕਿ ਹੋਰ ਬਰਾਉਜ਼ਰ ਇਸ ਤਰ੍ਹਾਂ ਕਰਦੇ ਹਨ。

ਇਸ ਉਦਾਹਰਣ ਵਿੱਚ ਰੂਟ ਐਲੀਮੈਂਟ (books.xml) ਦੇ ਉਪ ਨੋਡਾਂ ਦੀ ਗਿਣਤੀ ਨੂੰ ਪ੍ਰਵਾਹਿਤ ਕੀਤਾ ਜਾਵੇਗਾ। ਆਈਈ9 ਅਤੇ ਪਹਿਲੇ ਸ਼ਾਮਿਲ ਵਰਜਨਾਂ ਵਿੱਚ 6 ਉਪ ਨੋਡ ਪ੍ਰਵਾਹਿਤ ਕੀਤੇ ਜਾਣਗੇ ਅਤੇ ਆਈਈ10 ਅਤੇ ਬਾਅਦ ਦੇ ਸਾਰੇ ਬਰਾਉਜ਼ਰਾਂ ਵਿੱਚ 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) استعمال کیا جاتا ہے تاکہ جانچا جائے گا.

CDATA - نہ جانچا حروف نمائش کا دیتا (Unparsed Character Data)

مفہوم CDATA استعمال کیا جاتا ہے تاکہ نہ کچھ متنی کو XML جانچکن آپنے طور پر نہ جانچا جائے.

"<" اور "&" اور دیگر حروف XML علامت میں غیر مجاز ہیں.

"<" کا استعمال نہ کریں، کیونکہ جانچکن آپنے طور پر اس کو نئی علامت کا شروع جانچا جائے گا.

"&" کا استعمال نہ کریں، کیونکہ جانچکن آپنے طور پر اس کو حروف نمائش کی شکل میں جانچا جائے گا.

کچھ متنی (مثلاً جاوا اسکریپت) بہت سی "<" یا "&" کا استعمال کریں تاکہ خطا کا سلسلہ نکال سکیں، اس کے لئے اسکریپت کو 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 部分结尾的 "]]>" 不能包含空格或换行符。