Анализировать XML файл

Дима1991
Дата: 29.10.2012 13:32:47
Нужно сделать такое. мне не приходилось работать с xml в фокспро поэтому прошу помощи у вас. нужно сделать такое.

необходимо проанализировать xml файл и проверить код МКБ корректный или нет. В архиве выложил тех. задание, файл xml и таблица. Или наведите как сделать? понятия не имею вообще как данные из xml файла в фокспро вывести даже. Недавно писал тут по xml файлу, но этот xml Файл другой конфигурации полей много. Прошу помощи
Дима1991
Дата: 29.10.2012 13:34:17
Дополнение: нужно проверить корректность МКБ файла для случаев и услуг. Это поля sluch и usl в xml файле
Дима1991
Дата: 29.10.2012 14:21:31
скажите хоть как парсить этот xml файл который в архиве выложил. желательно пример если есть
Дима1991
Дата: 29.10.2012 16:09:34
нашел такой код для парсинга. у меня похожий файл только кроме usl есть еще и другие теги. как мне этот код подкорректировать под свой файл?

вот сама структура файла для которого приведен код парсинга.
+

<Test_xml>
<PAC>
<ID_PAC>1</ID_PAC>
<USL>
<ID_USL>1 </ID_USL>
</USL>
<USL>
<ID_USL>2 </ID_USL>
</USL>
<USL>
<ID_USL>3</ID_USL>
</USL>
<USL>
<ID_USL>3</ID_USL>
</USL>
<USL>
<ID_USL>3</ID_USL>
</USL>
</PAC>
<PAC>
<ID_PAC>2</ID_PAC>
<USL>
<ID_USL>1 </ID_USL>
</USL>
<USL>
<ID_USL>2 </ID_USL>
</USL>
<USL>
<ID_USL>5</ID_USL>
</USL>
<USL>
<ID_USL>7</ID_USL>
</USL>
<USL>
<ID_USL>3</ID_USL>
</USL>
</PAC>
</Test_xml>


а вот сам код парсинга:
+

CREATE CURSOR test_xml (id_pac int,id_usl int)

loXML = CREATEOBJECT("msxml2.DomDocument.3.0")
loXML.ASYNC=.F.
loXML.load("D:\......\txml1.xml")

loXMLNodes=loXML.getElementsByTagName("Test_xml/PAC")
loNodes = loXMLNodes.nextNode
FOR i=1 TO loXMLNodes.length
m.id_pac=loNodes.getElementsByTagName("ID_PAC").item(0).text
loNodes2 = loXMLNodes2.nextNode
FOR i2=1 TO loXMLNodes2.item(0).childNodes.length-1
m.id_usl=loXMLNodes2.item(i-1).childNodes.item(i2).text
SELECT test_xml
APPEND BLANK
GATHER MEMVAR
loNodes2 = loXMLNodes2.nextNode
endf
loNodes = loXMLNodes.nextNode
endf

RELEASE loXML
SELECT test_xml
brow
Дима1991
Дата: 30.10.2012 08:03:40
никто не может даже навести на мысль? что использовать вообще? какие функции? Структура файла примерно такова:

+

<zl_list>

<zap>

<pacient>
<fam>Воробьев</fam>
</pacient>

<sluch>

<id>111</id>

<usl>
<id_strah>rt23</id_strah>
</usl>

</sluch>

</zap>

</zl_list>
Дима1991
Дата: 30.10.2012 08:16:46
подойдет ли XMLTOCURSOR() ? для такой структуры файла? думал сделать так: в курсор1 вывести данные из тегов sluch, в курсор2 вывести данные тегов usl а в курсор3 вывести данные пациентов. и уже работать как курсорами. Правильно ли это будет?
Grin
Дата: 30.10.2012 14:44:36
2Дима1991,

Вот Вам еще один пример
взял Ваш xml из соседнего поста, немножко его усложнил

CREATE CURSOR test_xml (pacient char(60),sluch_id int,id_strah char(10))

loXML = CREATEOBJECT("msxml2.DomDocument.3.0")
loXML.ASYNC=.F.
loXML.load("D:\.......\test2.xml")

loXMLNodes=loXML.getElementsByTagName("zl_list/zap")
loNodes = loXMLNodes.nextNode
FOR i=1 TO loXMLNodes.length
	m.pacient=loNodes.getElementsByTagName("pacient").item(0).text
	m.sluch_id =loNodes.getElementsByTagName("sluch/id").item(0).text
	m.id_strah=loNodes.getElementsByTagName("sluch/usl/id_strah").item(0).text
	SELECT test_xml 
	APPEND BLANK 
	GATHER MEMVAR 
	loNodes = loXMLNodes.nextNode
endf 

RELEASE loXML 
SELECT test_xml 
brow


еще раз, совет, почитайте букварь что делают команды APPEND BLANK и GATHER MEMVAR