Parsing XML DOM

Karamihan sa mga browser ay may nakabukod na XML parser na ginagamit para sa pagbasa at paggamit ng XML.

Ang parser ay nagbabago ng XML sa isang bagay na maaring ikabahagi ng JavaScript.

Halimbawa

Ang mga halimbawa na ibinigay ng CodeW3C.com ay hindi nakasalalay sa browser at platform. Ang mga halimbawa na ito ay makakatakbo sa lahat ng modernong browser.

Maglaktawan at maglarawan ng file ng XML
Maglaktawan at maglarawan ng string ng XML

Maglarawan ng XML

Lahat ng modernong browser ay may nakabukod na XML parser na ginagamit para sa pagbasa at paggamit ng XML.

Ang parser ay naglalaro ng XML sa memory at nagbabago nito sa isang XML DOM object na maaring ikabahagi sa JavaScript.

May pagkakaiba ang Microsoft XML parser sa ibang parser sa ibang browser. Ang parser ng Microsoft ay sumusuporta sa paglaktawan ng XML file at XML string (teksto), habang ang ibang browser ay gumagamit ng hiwalay na parser. Gayunpaman, lahat ng mga parser ay may mga function na nagbibigay-daan sa paglalathala, pagbasa, pagdagdag, at pagtanggal ng mga node sa XML tree.

Sa tuto na ito, ipapakilala namin sa kung paano gumawa ng script na makakapatakbo sa IE at ibang mga browser.

Maglaktawan ng XML sa pamamagitan ng Microsoft XML parser

Ang Microsoft XML parser ay nakabukod sa Internet Explorer 5 at mas bagong bersiyon.

Ang sumusunod na JavaScript na segment ay naglulagay ng XML dokumento ("books.xml) Na lulan ng parser:

xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.load("books.xml");

Paglalarawan ng Kodigo:

  • Ang unang linya ay gumawa ng walang laman na Microsoft XML dokumentong object
  • Ang pangalawang linya ay nagtatanggal ng pagkakarga ng asynchronous, upang siguraduhin na ang parser ay hindi magpatuloy na magsasalita ng script bago kumpleto ang pagkakarga ng dokumento
  • Ang ikatlong linya ay nagsasabing sa parser na ilulan ang dokumento na may pangalang "books.xml"

Ang sumusunod na JavaScript na segment ay naglulagay ng string na may pangalang txt sa parser:

xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.loadXML(txt);

Komento:loadXML() Ang paraan ay ginagamit para maglaktawan ng string (teksto), at load() Ginagamit para maglaktawan ng file.

Ang parser ng XML sa Firefox at sa ibang mga browser

Ang sumusunod na JavaScript na segment ay naglulagay ng XML dokumento ("books.xml) Na lulan ng parser:

xmlDoc=document.implementation.createDocument("","",null);
xmlDoc.async="false";
xmlDoc.load("books.xml");

Paglalarawan ng Kodigo:

  • Ang unang linya ay nagtatayo ng isang walang laman na XML dokumento object
  • Ang pangalawang linya ay nagtatanggal ng pagkakarga ng asynchronous, upang siguraduhin na ang parser ay hindi magpatuloy na magsasalita ng script bago kumpleto ang pagkakarga ng dokumento
  • Ang ikatlong linya ay nagsasabing sa parser na ilulan ang dokumento na may pangalang "books.xml"

Ang sumusunod na JavaScript na segment ay naglulagay ng string na may pangalang txt sa parser:

parser=new DOMParser();
xmlDoc=parser.parseFromString(txt,"text/xml");

Paglalarawan ng Kodigo:

  • Ang unang linya ay nagtatayo ng isang walang laman na XML dokumento object
  • Ang pangalawang linya ay nagsasabing sa parser na ilulan ang string na may pangalang txt

Komento:Internet Explorer ay gumagamit ng loadXML() method upang magsasalin ng XML string, habang ang ibang browser ay gumagamit ng DOMParser object.

Magsasalin ng XML file - isang halimbawa na nagbabago sa lahat ng browser

Ang sumusunod na halimbawa ay naglulagay ng XML dokumento ("books.xml) Na lulan ng XML parser:

<html>
<body>
<script type="text/javascript">
try //Internet Explorer
  {
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  }
catch(e)
  {
  try //Firefox, Mozilla, Opera, atbp.
    {
    xmlDoc=document.implementation.createDocument("","",null);
    }
  catch(e) {alert(e.message)}
  }
try 
  {
  xmlDoc.async=false;
  xmlDoc.load("books.xml");
  document.write("xmlDoc ay naload, handa para sa paggamit");
  }
catch(e) {alert(e.message)}
</script>
</body>
</html>

TIY

Error: Access Across Domains

Para sa seguridad, ang modernong browser ay hindi pinapayagan ang access na may iba't ibang domain.

Ito ay nangangahulugan na ang web page at ang XML file na ito ay dapat nasa parehong server.

Ang XML file na binuksan ng halimbawa sa CodeW3C.com ay nasa domain ng CodeW3C.com.

Kung ikaw ay nagbabalak gamitin ang mga ito sa iyong web page, dapat ilagay ang XML file sa iyong sariling server. Kung hindi, xmlDoc.load() ay magbibigay ng error "Access is denied".

Magsasalin ng XML string - isang halimbawa na nagbabago sa lahat ng browser

Ang mga sumusunod na kodigo ay naglulagay at nagsasalin ng isang XML string:

<html>
<body>
<script type="text/javascript">
text="<bookstore>"
text=text+"<book>";
text=text+"<title>Harry Potter</title>";
text=text+"<author>J K. Rowling</author>";
text=text+"<year>2005</year>";
text=text+"</book>";
text=text+"</bookstore>";
try //Internet Explorer
  {
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  xmlDoc.async="false";
  xmlDoc.loadXML(text);
  }
catch(e)
  {
  try //Firefox, Mozilla, Opera, atbp.
    {
    parser=new DOMParser();
    xmlDoc=parser.parseFromString(text,"text/xml");
    }
  catch(e) {alert(e.message)}
  }
document.write("xmlDoc ay naload, handa para sa paggamit");
</script>
</body>
</html>

TIY

Komento:Internet Explorer ay gumagamit ng loadXML() para sa pagpaliwanag ng string ng XML, habang ang iba pang browser ay gumagamit ng DOMParser obheheto.