XML — это переносимый язык с открытым исходным кодом, который позволяет программистам разрабатывать приложения, которые могут быть прочитаны другими приложениями, независимо от операционной системы и / или языка разработки. Это один из самых распространенных языков, используемых для обмена данными между приложениями.
Что такое XML?
Расширяемый язык разметки XML — это язык разметки, очень похожий на HTML или SGML. Это рекомендуется Консорциумом World Wide Web и доступно в качестве открытого стандарта. XML чрезвычайно полезен для отслеживания небольших и средних объемов данных, не требуя магистрали на основе SQL.
Для всех наших примеров XML-кода давайте используем следующий простой XML-файл movies.xml для создания XML-файла и последующего чтения файла.
<collection shelf = "New Arrivals"> <movie title = "Enemy Behind"> <type>War, Thriller</type> <format>DVD</format> <year>2003</year> <rating>PG</rating> <stars>10</stars> <description>Talk about a US-Japan war</description> </movie> <movie title = "Transformers"> <type>Anime, Science Fiction</type> <format>DVD</format> <year>1989</year> <rating>R</rating> <stars>8</stars> <description>A schientific fiction</description> </movie> <movie title = "Trigun"> <type>Anime, Action</type> <format>DVD</format> <year>1986</year> <rating>PG</rating> <stars>10</stars> <description>Vash the Stam pede!</description> </movie> <movie title = "Ishtar"> <type>Comedy</type> <format>VHS</format> <year>1987</year> <rating>PG</rating> <stars>2</stars> <description>Viewable boredom </description> </movie> </collection>
Начиная
По умолчанию функциональность xml не включена в интерпретатор Rexx. Для работы с XML в Rexx необходимо выполнить следующие шаги.
-
Загрузите следующие файлы —
-
Rexxxml — www.interlog.com/~ptjm/
-
Libxml2 — www.ctindustries.net/libxml/
-
iconv-1.9.2.win32 — www.xmlsoft.org/sources/win32/oldreleases/
-
libxslt-1.1.26.win32 — www.xmlsoft.org/sources/win32/oldreleases/
-
-
Извлеките все файлы и убедитесь, что они включены в системный путь.
Загрузите следующие файлы —
Rexxxml — www.interlog.com/~ptjm/
Libxml2 — www.ctindustries.net/libxml/
iconv-1.9.2.win32 — www.xmlsoft.org/sources/win32/oldreleases/
libxslt-1.1.26.win32 — www.xmlsoft.org/sources/win32/oldreleases/
Извлеките все файлы и убедитесь, что они включены в системный путь.
Загрузка функций XML
После того, как все файлы в приведенном выше разделе были загружены и успешно зарегистрированы, следующим шагом является написание кода для загрузки функций Rexx XML. Это делается с помощью следующего кода.
rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs') if rcc then do say rxfuncerrmsg() exit 1 end call xmlloadfuncs
Следующие вещи можно отметить о вышеупомянутой программе —
-
Функция rxfuncadd используется для загрузки внешних библиотек. Функция xmlloadfuncs используется для загрузки всех библиотек из файла rexxxml в память.
-
Если значение rcc <> 0, то это приведет к ошибке. Для этого мы можем вызвать rxfuncerrmsg, чтобы получить более подробную информацию о сообщении об ошибке.
-
Наконец, мы обращаемся к xmlloadfuncs , чтобы все функции, связанные с xml, теперь можно было включить в программе Rexx.
Функция rxfuncadd используется для загрузки внешних библиотек. Функция xmlloadfuncs используется для загрузки всех библиотек из файла rexxxml в память.
Если значение rcc <> 0, то это приведет к ошибке. Для этого мы можем вызвать rxfuncerrmsg, чтобы получить более подробную информацию о сообщении об ошибке.
Наконец, мы обращаемся к xmlloadfuncs , чтобы все функции, связанные с xml, теперь можно было включить в программе Rexx.
Давайте посмотрим на различные методы, доступные для XML в Rexx .
xmlVersion
Этот метод возвращает версию библиотек XML и XSLT, используемых в системе.
Синтаксис
xmlVersion()
параметры
Никто
Возвращаемое значение
Этот метод возвращает версию библиотек XML и XSLT, используемых в системе.
пример
rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs') if rcc then do say rxfuncerrmsg() exit 1 end call xmlloadfuncs say xmlVersion()
Когда мы запустим вышеуказанную программу, мы получим следующий результат. Это снова зависит от версии библиотек XML, используемых в системе.
Выход
1.0.0 20631 10126
xmlParseXML
Эта функция используется для анализа данных XML, отправленных в функцию. Дерево документа возвращается функцией.
Синтаксис
xmlParseXML(filename)
параметры
-
Имя файла — это имя файла XML, который необходимо проанализировать.
Имя файла — это имя файла XML, который необходимо проанализировать.
Возвращаемое значение
Дерево документа возвращается функцией. Иначе возвращает 0, если есть ошибка.
пример
rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs') if rcc then do say rxfuncerrmsg() exit 1 end call xmlloadfuncs say xmlVersion() sw = xmlParseXML('test.xml')
Выход
Нет общего вывода.
xmlFindNode
Этот метод оценивает переданное ему выражение XPath . Это используется для синтаксического анализа дерева документов для получения набора узлов, который может быть обработан в дальнейшем.
Синтаксис
xmlParseXML(XPath,document)
параметры
-
XPath — это путь к узлу в XML-файле.
-
документ — это документ XML
XPath — это путь к узлу в XML-файле.
документ — это документ XML
Возвращаемое значение
Оценивает выражение XPath и возвращает результат в виде набора узлов, который может быть использован позже.
пример
rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs') if rcc then do say rxfuncerrmsg() exit 1 end call xmlloadfuncs say xmlVersion() document = xmlParseXML('test.xml') nodeset = xmlFindNode('//movie', document) say xmlNodesetCount(nodeset)
Когда мы запустим вышеуказанную программу, мы получим следующий результат.
Выход
4
Выходные данные показывают количество узлов фильма в нашем списке xml
xmlEvalExpression
Приведенный ниже метод используется для оценки выражения XPath и возврата в результате строки.
Синтаксис
xmlParseXML(XPath,Node)
параметры
-
XPath — это путь к узлу в XML-файле.
-
документ — конкретный элемент узла.
XPath — это путь к узлу в XML-файле.
документ — конкретный элемент узла.
Возвращаемое значение
Строка возвращается на основе отправленного ей выражения XPath.
пример
rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs') if rcc then do say rxfuncerrmsg() exit 1 end call xmlloadfuncs document = xmlParseXML('test.xml') nodeset = xmlFindNode('//movie', document) do j = 1 to xmlNodesetCount(nodeset) value = xmlEvalExpression('type', xmlNodesetItem(nodeset, j)) say value end
Когда мы запустим вышеуказанную программу, мы получим следующий результат.