Учебники

Rexx — XML

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/

Извлеките все файлы и убедитесь, что они включены в системный путь.

Загрузка функций 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

Когда мы запустим вышеуказанную программу, мы получим следующий результат.