Спонсор: Microsoft
Воронежский государственный университет
Опубликован: 04.02.2009 | Доступ: свободный | Студентов: 8216 / 665 | Оценка: 4.14 / 3.78 | Длительность: 19:54:00
Самостоятельная работа 12:

Программная обработка XML документов с помощью XML DOM

< Лекция 11 || Самостоятельная работа 12: 123 || Самостоятельная работа 13 >

Порядок выполнения лабораторной работы

При выполнении данной лабораторной работы потребуется XML документ timetable.xml, который использовался в "Структура XML документа. XML схемы" :

<?xml version="1.0"?>
<timetable>
<day dayOfWeek="Monday">
 <lesson type="practical">
      <timeFrom>08.00</timeFrom>
      <timeTo>09.30</timeTo>
      <subject>Deutsch</subject>
      <teacher>Borisova</teacher>
      <room>216</room>
    </lesson>
    <lesson type="lecture">
      <timeFrom>09.40</timeFrom>
      <timeTo>11.10</timeTo>
      <subject>SAP Administration</subject>
      <teacher>Egorov</teacher>
      <room>384</room>
    </lesson>
    <lesson  type="practical">
      <timeFrom>11.20</timeFrom>
      <timeTo>12.50</timeTo>
      <subject>SAP Administration</subject>
      <teacher>Petrov</teacher>
      <room>384</room>
    </lesson>
</day>
</timetable>
  1. Создание JavaScript сценария загрузки XML документа.

    Создайте текстовый файл loadxmldoc.js, содержащий описание функции загрузки XML документа:

    function loadXMLDoc(dname) 
    {
    try //Internet Explorer
      {
      xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
      }
    catch(e)
      {
      try //Firefox, Mozilla, Opera, etc.
        {
        xmlDoc=document.implementation.createDocument("","",null);
        }
      catch(e) {alert(e.message)}
      }
    try 
      {
      xmlDoc.async=false;
      xmlDoc.load(dname);
      return(xmlDoc);
      }
    catch(e) { alert(e.message) }
    return(null);
    }

    и сохраните его в той же папке, где находится файл timetable.xml.

    Код вызова этой функции может выглядеть следующим образом:

    <html>
    <head>
    <script type="text/javascript" src="loadxmldoc.js"> 
    </script>
    </head>
    
    <body>
    <script type="text/javascript">
       xmlDoc=loadXMLDoc("timetable.xml");
       document.write("xmlDoc is loaded, ready for use");
    </script>
    </body>
    </html>
  2. Перемещение по дереву узлов.

    Подготовьте следующую HTML страницу:

    <html>
    <head>
    <script type="text/javascript" src="loadxmldoc.js"> 
    </script>
    </head>
    <body>
    <script type="text/javascript">
       xmlDoc = loadXMLDoc("timetable.xml");
       x = xmlDoc.getElementsByTagName("subject");
       for (i=0; i<x.length; i++)
        { 
           document.write(x[i].childNodes[0].nodeValue);
           document.write("<br />");
        }
    </script>
    </body>
    </html>

    После загрузки страницы в браузере можно будет увидеть следующий результат:

    DeutschSAP AdministrationSAP Administration
  3. Изменение значения элемента.

    Следующий пример демонстрирует изменение значения элемента <subject>:

    xmlDoc=loadXMLDoc("timetable.xml");
    x=xmlDoc.getElementsByTagName("subject")[0].childNodes[0];
    x.nodeValue="Java programming";
    x = xmlDoc.getElementsByTagName("subject");
    for (i=0; i<x.length; i++)
    { 
      document.write(x[i].childNodes[0].nodeValue);
      document.write("<br />");
    }

    Внесите соответствующие изменения в предыдущую страницу и загрузите ее в браузере.

  4. Перемещение по узлам дерева с использованием отношений между ними.

    Следующий код показывает, как используя отношения firstChild и nextSibling можно получить для текущего узла список его дочерних узлов:

    x = xmlDoc.getElementsByTagName("lesson")[0].childNodes;
    y = xmlDoc.getElementsByTagName("lesson")[0].firstChild;
    
    for (i = 0; i < x.length; i++)
    {
    if (y.nodeType == 1)
      {
      document.write(y.nodeName + "<br />");
      }
    y=y.nextSibling;
    }

    Внесите необходимые изменения в html страницу и загрузите ее в браузере.

Контрольное задание

В приведенном ниже XML документе описана экзаменационная ведомость:

<gradeReport id="120851">
<date>10-06-2008</date>
<subject>Computer Science Fundamentals</subject>
<examiner>prof.Litvinov</examiner>
   <gradeList>
	<gradeRecord id="1">
	   <student>Ivanov</student>
	   <grade>4</grade>
	</gradeRecord>
	<gradeRecord id="2">
	   <student>Petrov</student>
	   <grade>3</grade>
	</gradeRecord>
	<gradeRecord id="3">
	   <student>Sidorov</student>
	   <grade>5</grade>
	</gradeRecord>
   </gradeList>
</gradeReport>
  1. Используя методы DOM XML, сформируйте HTML страницу, содержащую таблицу из трех столбцов: номер, студент, оценка.
  2. Используя методы DOM XML, замените цифровые значения оценок их словесными эквивалентами, например "4" на "good".
< Лекция 11 || Самостоятельная работа 12: 123 || Самостоятельная работа 13 >
Михаил Олифиренко
Михаил Олифиренко
Александр Табачук
Александр Табачук

Это только у меня не работает кнопочка "Получить код DreamSpark"? Пишет "временно не доступно..." А когда заработает?