|
|
|
URL | Свойство, доступное для записи и чтения. Задает или возвращает URL обрабатываемого документа. В случае изменения этого свойства текущий документ уничтожается и начинается загрузка нового по указанному URL |
---|---|
root | Возвращает корневой элемент XML- документа |
charset | Свойство, доступное для записи и чтения.Возвращает или устанавливает название текущее кодировочной таблицы согласно требованиям ISO. |
version | Возвращает номер версии XML |
doctype | Возвращает содержимое элемента !DOCTYPE |
createElement() | Метод, позволяющий создать новый элемент, который будет добавлен
в качестве дочернего для текущего элемента дерева. В качестве
первого параметра задается тип элемента, в качестве второго -
название элемента
xml.createElement(0,"new_element") |
fileSize | Возвращает размер XML- документа. Это свойство в C++- версии анализатора еще не реализовано |
fileModifiedDate | Возвращает дату последнего изменения XML- документа. Это свойство в C++- версии анализатора еще не реализовано |
fileUpdatedDate | Возвращает дату последнего обновления XML- документа. Это свойство в C++- версии анализатора еще не реализовано |
mimeType | Возвращает MIME-тип(MIME- Multipurpose Internet Mail Extension, RFC 1341).Это свойство в C++- версии анализатора еще не реализовано |
Ниже приведен фрагмент JavaScript- сценария, использующего эти методы и свойства для вывода информации о текущем документе:
var xmldoc = new ActiveXObject("msxml"); var xmlsrc = "http://localhost/xml/journal.xml"; xmldoc.URL = xmlsrc; function viewProperties(){ this.document.writeln('<center><table width=90% >'); this.document.writeln('<tr>'); this.document.writeln('<td align="center" bgcolor="silver">Document URL</td> <td align="center">'+xmldoc.URL+'</td></tr>'); this.document.writeln('<tr>'); this.document.writeln('<td align="center" bgcolor="silver">Document root</td> <td align="center">'+xmldoc.root+'</td></tr>'); this.document.writeln('<tr>'); this.document.writeln('<td align="center" bgcolor="silver">Document doctype</td> <td align="center">'+xmldoc.doctype+'</td></tr>'); this.document.writeln('<tr>'); this.document.writeln('<td align="center" bgcolor="silver">Document version</td> <td align="center">'+xmldoc.version+'</td></tr>'); this.document.writeln('<tr>'); this.document.writeln('<td align="center" bgcolor="silver">Document charset</td> <td align="center">'+xmldoc.charset+'</td></tr>'); this.document.writeln('</table></center>'); }
type | Возвращает тип элемента. Это свойство может быть использовано
для того, чтобы разделить имена тэгов и данные, содержащиеся внутри
них. В данной версии анализатора определены следующие типы
элементов: 0 - элемент 1 - текст 2 - комментарий 3 - Document 4 - DTD |
---|---|
tagName | Возвращает или устанавливает название тэга(в виде строки с символами, приведенными к верхнему регистру). Названия метатэгов(например, <?xml?>) начинаются с символа ?. Названия тэгов комментариев начинаются с символа !. |
text | Возвращает текстовое содержимое элементов и комментариев. |
AddChild() | Добавление нового дочернего элемента и всех его потомков в
текущую ветвь дерева. В качестве первого параметра этой функции
необходимо передать объект типа Element, который затем будет помещен
в список дочерних элементов. Также необходимо задать индекс нового
элемента в списке и в качестве последнего параметра обязательно
передать значение -1. Т.к. в данной модели любой элемент в документе
может иметь ссылку только на один родительский элемент, при
выполнении данной процедуры у добавляемого объекта старая ссылка на
родительский элемент теряется. Используя это свойство, можно
перемещать элементы из одного XML- документа в другое, но том
случае, если у дочерних ссылок перемещаемого элемента существуют
внешние ссылки или сами дочерние элементы ссылаются на внешние
возможно возникновение ошибки
elem.addChild(elem.children.item().children.item(0),0,-1) |
removeChild() | Удаляет дочерний элемент и всех его потомков. Элементы остаются
в памяти и могут быть вновь добавлены к дереву при помощи метода
addChild(). elem.removeChild(elem.children.item(1)) |
parent | Возвращает указатель на текущий родительский элемент. Ссылки на родительский элемент имеют все элементы, за исключением корневого. |
GetAttribute() | Возвращает значение указанного атрибута в виде текстовой строки.
elem.getAttribute("color") |
SetAttribute() | Устанавливает указанный атрибут и его значение. Прежнее значение
атрибута теряется elem.setAttribute("color","red") |
removeAttribute() | Уничтожает указанный атрибут
elem.removeAttribute("color") |
children | Возвращает ассоциированный список дочерних элементов(коллекцию). Такой список позволяет приложению получать нужные элементы как по названию, так и по порядковому номеру при помощи метода item(). В том случае, если потомков у текущего элемента нет, функция возвратит null |
Пример использования
Вот пример использования описанных функций:
<script language="javascript"> <!-- var xmldoc = new ActiveXObject("msxml"); var xmlsrc = "http://localhost/xml/sample.xml"; function parse(root){ var i=0; if(root.type==0){ this.document.writeln('<UL>Current tag is '+root.tagName+' (parent is '+root.parent+'). '); }else if(root.type==1){ this.document.writeln('<LI>It is a text of '+root.parent.tagName+' element: <i>'+root.text+'</i></LI>'); }else{ this.document.writeln('<br><br>Error'); } if(root.children!=null){ this.document.writeln('It consist of '+root.children.length+' elements:'); for(i=0;i<root.children.length;i++){ parse(root.children.item(i)); } } else{ this.document.writeln('</UL>'); } } function viewDocument(){ xmldoc.URL = xmlsrc; this.document.writeln('<body bgcolor="white">'); this.document.writeln('<p><center><hr width=80%>XML sample page <hr width=80%></center><p>'); parse(xmldoc.root); this.document.writeln('</body>'); } viewDocument(); //--> </script>
Как видно из примера, в процессе обработки XML- документа необходимо рекурсивно обходить все ветви создаваемого анализатором дерева, причем, на каждом шаге возможны следующие ситуации:
Для обработки потомков текущего элемента используется метод item(), который вызывается в цикле столько раз, сколько потомков у текущего элемента. Обработка каждого дочернего элемента осуществляется вызовом этой же функции, в чем и заключается рекурсия.
Доступ к свойствам XML- анализатора возможен также из сценариев ASP(Active Server Pages), выполняющихся на стороне сервера. Если при написании ASP-модуля используется язык VBscript, то для создания объекта, представляющего XML- документ, необходимо включить следующее выражение:
Set myxml=Server.CreateObject("msxml")
Однако необходимо учитывать, что в качестве сервера в этом случае надо использовать Web- сервер, поддерживающий ISAPI, и так же на компьютере должны быть установлены или броузер Internet Explorer версии 4 и выше, или зарегистрированный в реестре ActiveX- компонент msxml.
Вот пример использования свойств XML-документа в ASP- программе:
<% Set myxml=Server.CreateObject("msxml") myxml.url = "http://localhost/xml/sample1.xml" url=myxml.url Set root=myxml.root version=myxml.version charset=myxml.charset %> <html> <body bgcolor="white"> <center> <table width=80%> <tr> <td align="center" bgcolor="silver">URL</td> <td align="center"><%=url%></td> </tr> <tr> <td align="center" bgcolor="silver">Version</td> <td align="center"><%=version%></td> </tr> <tr> <td align="center" bgcolor="silver">Root element</td> <td align="center"><%=root.tagName%></td> </tr> <tr> <td align="center" bgcolor="silver">Charset</td> <td align="center"><%=charset%></td> </tr> </table> </body> </html>
Создавая msxml- объект при помощи CreateObject, мы в дальнейшем вызываем его методы и свойства привычным нам способом. Отличается лишь способ вставки полученной информации в HTML- страницу - она генерируется не на стороне клиента, а приходит к нему в уже готовом виде.
В заключение хотелось бы отметить, что рассмотренные
способы работы с XML- документами могут применяться для отображения их
элементов на экране броузера. Не всегда они являются наиболее эффективными
для форматирования текста - для каждого нового документа с измененной
структурой требуются частично или полностью переписывать обработчик(в
следующем разделе мы попробуем использовать для этих же целей стилевые
таблицы XSL). Однако использование Java Script позволяет уже сегодня
разрабатывать реальные Интернет- приложения, использующие встроенный в
броузер клиента анализатор в качестве средства для доступа к
структурированной информации XML.
Содержание
|