XML DOM నోడ్ ట్రీ విశ్లేషణ

నోడ్ ట్రేవర్స్ అనేది నోడ్ ట్రీ ను చుట్టూ ప్రయాణించడానికి అర్థం

నోడ్ ట్రేవర్స్

మీరు తరచుగా 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 + "<br>"; } document.getElementById("demo").innerHTML = txt; </script> </body> </html>

స్వయంగా ప్రయత్నించండి

ఉదాహరణ వివరణ:

  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>

ఇంటర్నెట్ ఎక్స్ప్లోరర్ 9 మరియు అది ముంది వెర్షన్లు ఖాళీ లేదా కొత్త పంక్తిని టెక్స్ట్ నుండి పరిగణించవు, మరియు ఇతర బ్రౌజర్లు ఇలా చేస్తాయి.

ఈ ఉదాహరణ బుక్స్.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) అనే పదం, 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 {
        రిటర్న్ 0;
    }
}
]]>
</script>

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

关于 CDATA 部分的注意事项:

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

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