<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Форум компьютерной помощи &mdash; NotesDOMParser класс. Проход по XML файлу.]]></title>
	<link rel="self" href="https://itpmr.ru/extern.php?action=feed&amp;tid=855&amp;type=atom" />
	<updated>2014-05-20T08:38:41Z</updated>
	<generator>PunBB</generator>
	<id>https://itpmr.ru/viewtopic.php?id=855</id>
		<entry>
			<title type="html"><![CDATA[NotesDOMParser класс. Проход по XML файлу.]]></title>
			<link rel="alternate" href="https://itpmr.ru/viewtopic.php?pid=124174#p124174" />
			<content type="html"><![CDATA[<p>С помощью лотусового класса NotesDOMParser проходим по файлу persons.xml и загоняем в переменную Bart - значение&nbsp; тега name = Bart, в переменную Simps - значение&nbsp; тега sureName = sureName.<br />Так же получаем в переменные атрибуты atr и asd.</p><p>Файл для обработки - persons.xml</p><p>&lt;persons&gt;<br />&lt;pers1 atr=&quot;петя&quot;&gt;<br />&lt;name asd=&quot;Вася&quot;&gt;<br />Bart<br />&lt;/name&gt;<br />&lt;sureName&gt;<br />Simpson<br />&lt;/sureName&gt;<br />&lt;/pers1&gt;<br />&lt;pers2&gt;<br />&lt;name&gt;<br />Jonny<br />&lt;/name&gt;<br />&lt;sureName&gt;<br />Bravo<br />&lt;/sureName&gt;<br />&lt;/pers2&gt;<br />&lt;/persons&gt;</p><br /><p>Сам лотус скрипт:</p><p>Sub Click(Source As Button)<br />&nbsp; &nbsp; Dim session As NotesSession<br />&nbsp; &nbsp; Dim db As NotesDatabase<br />&nbsp; &nbsp; Dim inputStream As NotesStream, outputStream As NotesStream<br />&nbsp; &nbsp; Dim docNode As NotesDOMDocumentNode<br />&nbsp; &nbsp; Dim domParser As NotesDOMParser<br />&nbsp; &nbsp; Dim eNode As NotesDOMElementNode<br />&nbsp; &nbsp; <br />&nbsp; &nbsp; Dim atr As notesDOMAttributeNode, asd As notesDOMAttributeNode<br />&nbsp; &nbsp; <br />&nbsp; &nbsp; Dim origXML As String, outputFile As String<br />&nbsp; &nbsp; origXML = &quot;c:\dxl\persons.xml&quot;<br />&nbsp; &nbsp; outputFile = &quot;c:\dxl\DOMtree.txt&quot;<br />&nbsp; &nbsp; <br />&nbsp; &nbsp; <br />&nbsp; &nbsp; Set session = New NotesSession&nbsp; &nbsp; <br />&nbsp; &nbsp; Set db = session.CurrentDatabase<br />&nbsp; &nbsp; <br />&nbsp; &#039;create the output file<br />&nbsp; &nbsp; Set outputStream =session.CreateStream<br />&nbsp; &nbsp; outputStream.Open (outputFile)<br />&nbsp; &nbsp; outputStream.Truncate<br />&nbsp; &nbsp; <br />&nbsp; &nbsp;&nbsp; &nbsp;&#039;write report title<br />&nbsp; &nbsp; LF = Chr(13)+Chr(10)<br />&nbsp; &nbsp; outputStream.WriteText (&quot;DOM Parser&quot; )<br />&nbsp; &nbsp; outputStream.WriteText (LF)<br />&nbsp; &#039;open the XML file<br />&nbsp; &nbsp; Set inputStream = session.CreateStream<br />&nbsp; &nbsp; inputStream.Open (origXML)<br />&nbsp; &nbsp; <br />&nbsp; &nbsp; <br />&nbsp; &#039;create DOM parser and process<br />&nbsp; &nbsp; Set domParser=session.CreateDOMParser(inputStream, outputStream)<br />&nbsp; &nbsp; Call domParser.Serialize( )<br />&nbsp; &nbsp; domParser.Process<br />&nbsp; &nbsp; <br />&nbsp; &#039;get the document node<br />&nbsp; &nbsp; Set docNode = domParser.Document<br />&nbsp; &nbsp; <br />&nbsp; &nbsp; <br />&nbsp; &nbsp; Dim nDocument As Integer<br />&nbsp; &nbsp; <br />&nbsp; &nbsp; If docNode.HasChildNodes Then<br />&nbsp; &nbsp; &nbsp; &nbsp; <br />&nbsp; &nbsp; &nbsp; &nbsp; numChildNodes = docNode.NumberOfChildNodes&nbsp; &nbsp; &#039; 2 детки - pers1 и pers2<br />&nbsp; &nbsp; &nbsp; &nbsp; <br />&nbsp; &nbsp; &nbsp; &nbsp; Dim documentList As NotesDOMNodeList<br />&nbsp; &nbsp; &nbsp; &nbsp; Set documentList =&nbsp; &nbsp; docNode.GetElementsByTagName (&quot;pers1&quot;) &#039; ищем по тегу, а не дереву<br />&nbsp; &nbsp; &nbsp; &nbsp; nDocument = documentList.NumberOfEntries &#039; детка<br />&nbsp; &nbsp; &nbsp; &nbsp; For i = 1 To nDocument<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Set&nbsp; &nbsp; eNode =&nbsp; &nbsp; documentList.GetItem(i) &#039;pers1<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Set atr =&nbsp; &nbsp; eNode.GetAttributeNode(&quot;atr&quot;)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; value$ =atr.AttributeValue<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; outputStream.WriteText(value$)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; outputStream.WriteText (LF)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Set documentList = docNode.GetElementsByTagName&nbsp; &nbsp; (&quot;name&quot;)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Set&nbsp; &nbsp; eNode =&nbsp; &nbsp; documentList.GetItem(1) &#039;name<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Set asd =&nbsp; &nbsp; eNode.GetAttributeNode(&quot;asd&quot;)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; value$ =asd.AttributeValue<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; outputStream.WriteText(value$)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; outputStream.WriteText (LF)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Bart$ =&nbsp; &nbsp; eNode.lastchild.NodeValue &#039; содержимое ноды name<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; outputStream.WriteText(Bart$)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; outputStream.WriteText (LF)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Set documentList = docNode.GetElementsByTagName&nbsp; &nbsp; (&quot;sureName&quot;)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Set&nbsp; &nbsp; eNode =&nbsp; &nbsp; documentList.GetItem(1) &#039;sureName<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Simps$ = eNode.lastchild.NodeValue &#039; содержимое ноды sureName<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; outputStream.WriteText(Simps$)<br />&nbsp; &nbsp; &nbsp; &nbsp; Next<br />&nbsp; &nbsp; End If<br />&nbsp; &nbsp; Call outputStream.Close<br />End Sub</p><p>NotesXMLProcessor - запускает парсер.<br />NotesDOMNode - корневой класс для работы с нодами, в нем есть подклассы для работы с узлами, атрибутами.</p>]]></content>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>https://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2014-05-20T08:38:41Z</updated>
			<id>https://itpmr.ru/viewtopic.php?pid=124174#p124174</id>
		</entry>
</feed>
