Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Выгрузить в xml поэлементно? / 6 сообщений из 6, страница 1 из 1
01.04.2008, 11:34
    #35226644
beginner_fox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузить в xml поэлементно?
Добрый день!

Выгружаю данные из связанных курсоров через xmlAdapter,
но выгрузка получается ориентированной на атрибут, а мне необходимо поэлементно.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SELECT 'passport'
INDEX on VAL(sub_id) TO pas_sub
SELECT 'subscriber'
SET RELATION TO VAL(subscriber_id) INTO 'passport'

LOCAL t_xml_Adapter as XMLAdapter
t_xml_Adapter=CREATEOBJECT("xmladapter")
WITH t_xml_Adapter
        .respectCursorCP= 1251     
        .respectNesting=.t.
        .AddTableSchema ('subscriber',.f.)
        .Addtableschema('passport',.f.)
        .forceclosetag=.t.
       .ToXML('c:\shluz\subscriber.xml','',.t.,.t.,.t.)
endwith
Получаю следующее:

<?xml version = "1.0" encoding="Windows-1251" standalone="yes"?>
<VFPDataSet>
<xsd:schema id="VFPDataSet" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="VFPDataSet" msdata:IsDataSet="true">
...
<xsd:anyAttribute namespace="http://www.w3.org/XML/1998/namespace" processContents="lax"></xsd:anyAttribute>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<subscriber subscriber_id="xxx" subscriber_name="xxx" directing_agency="" legal_entity="x" category="x" embassy_name="" post_member="" inn="xxx" kpp="xxx" okpo="xxx" okved="" draft_bank="x" contract_number="xxx" contract_date="xxx">
<passport passport_data="xxx" birthday="xxx" birthplace="xxxx"></passport>
</subscriber>
<subscriber subscriber_id="xxx" subscriber_name="xxx'" directing_agency="xxx'" legal_entity="x" category="x" embassy_name="" post_member="" inn="" kpp="" okpo="" okved="" draft_bank="" contract_number="" contract_date=""></subscriber>
</VFPDataSet>


Надо такой:

<subscriber subscriber_id="xxx">
<subscriber_name>Пупкин </subscriber_name>
<directing_agency>xxxx</directing_agency>
<legal_entity>x</legal_entity>
<category>x</category>
<embassy_name>xxx</embassy_name>
<post_member>xxxx</post_member>
<inn>xxx</inn>
<kpp>xxx</kpp>
<okpo>xxx</okpo>
<okved>xxx</okved>
<draft_bank>xxx</draft_bank>
<contract_number>xxx</contract_number>
<contract_date>xxx</contract_date>
</subscriber>
...
Рейтинг: 0 / 0
01.04.2008, 12:57
    #35226994
Выгрузить в xml поэлементно?
http://forum.foxclub.ru/read.php?29,248240,313197#msg-313197

и смотри пост Aleksey Tsingauz [MSFT]
...
Рейтинг: 0 / 0
01.04.2008, 14:37
    #35227402
begginer_fox
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузить в xml поэлементно?
12345вышелзайчикпогулятьhttp://forum.foxclub.ru/read.php?29,248240,313197#msg-313197

и смотри пост Aleksey Tsingauz [MSFT]

Спасибо!
Более-менее разобрался.
**Заменил .f. на .t.
.t.-загружать поэлементно
.f.- ... attribute
Код: plaintext
.AddTableSchema ('subscriber',.t.,STRCONV("subscriber", 5 ))
...
Рейтинг: 0 / 0
07.04.2008, 16:24
    #35240303
beginner_fox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузить в xml поэлементно?
Проблема немного сложнее, выгружать данные в соответствии со схемой.
Как привязать xmlAdapter к схеме, чтобы данные выгружались в соответствии с заданной схемой?

Код: plaintext
1.
2.
...
	.XMLSchemaLocation='myshema.xsd'
	.ToXML('c:\subscriber.xml','myshema',.t.)
-адаптер просто заменяет схему.
...
Рейтинг: 0 / 0
07.04.2008, 17:43
    #35240627
Sergey Sizov.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузить в xml поэлементно?
beginner_foxПроблема немного сложнее, выгружать данные в соответствии со схемой.
Как привязать xmlAdapter к схеме, чтобы данные выгружались в соответствии с заданной схемой?

Что понимается под выгрузкой в соответствии со схемой? Что это за процесс такой? И что должно при этом происходить с данными? Почему?
...
Рейтинг: 0 / 0
04.07.2008, 18:20
    #35412370
Выгрузить в xml поэлементно?
авторвыгружать данные в соответствии со схемой


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
set default to D:\vfp9\Samples\Northwind\
close databases all
USE northwind!customers IN  0  excl
SELECT customers 

local loXMLAdapter as XMLAdapter,  ;
	  laRR[ 1 ], lcXSD, lnElement ,  ;
	  lnField, loXField, loXTable

create cursor schema (name varchar( 20 ))
lcXSD = getXsd() &&filetostr("c:\2.xsd") -- чтобы не прикладывать файл
local laRR[ 1 ]
if alines(laRR, lcXSD,  8 , ["])>0
	for lnElement=1 to alen(laRR)
	 if atc("element name=",laRR(lnElement))>0
	 	insert into schema  value(laRR[lnElement+1])
	 endif 
	endfor
endif 
index on lower(name) tag name

loXMLAdapter = CREATEOBJECT("XMLAdapter") 
with loXMLAdapter
	store .t. to .RESPECTCURSORCP,   ;
				 .RESPECTNESTING,    ;
				 .PreserveWhiteSpace,;
				 .USECODEPAGE,       ;
				 .ForceCloseTag
	.CODEPAGE=1251 
	.XMLSCHEMALOCATION="" 
	.XMLNAME=STRCONV("MaIL",5) 

	loXTable=.AddTableSchema("customers",.f.,STRCONV("coNtacttitle",5)) 
	with loXTable
		FOR lnField=1 TO .Fields.Count 
			loXField=.Fields.Item(1) 
			.Fields.Remove(1)
			loXField.XMLName= STRCONV(iif(seek(lower(loXField.Alias),"schema"),schema.name, loXField.Alias),5)
			.Fields.Add(loXField,loXField.XMLName) 
		endfor
	endwith
	.TOXML("c:\ 1 .xml",,.t.) 

endwith




procedure getXsd
local lcXSD
text to lcXSD noshow pretext 15
  <?xml version="1. 0 " encoding="utf- 8 " ?> 
- <xs:schema id="MaIL" xmlns="" xmlns:xs="http://www.w3.org/ 2001 /XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
- <xs:annotation>
- <xs:appinfo source="urn:schemas-microsoft-com:xml-msdatasource">
- <DataSource DefaultConnectionIndex="0" FunctionsComponentName="QueriesTableAdapter" Modifier="AutoLayout, AnsiClass, Class, Public" SchemaSerializationMode="IncludeSchema" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
  <Connections /> 
  <Tables /> 
  <Sources /> 
  </DataSource>
  </xs:appinfo>
  </xs:annotation>
- <xs:element name="MaIL" msdata:IsDataSet="true" msdata:Locale="en-US">
- <xs:complexType>
- <xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:element name="coNtacttitle" minOccurs="0" maxOccurs="79228162514264337593543950335">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="CustomerId">
- <xs:simpleType>
- <xs:restriction base="xs:string">
  <xs:maxLength value="4" /> 
  </xs:restriction>
  </xs:simpleType>
  </xs:element>
- <xs:element name="CompanyName">
- <xs:simpleType>
- <xs:restriction base="xs:string">
  <xs:maxLength value="40" /> 
  </xs:restriction>
  </xs:simpleType>
  </xs:element>
- <xs:element name="ContactTitle" minOccurs="0">
- <xs:simpleType>
- <xs:restriction base="xs:string">
  <xs:maxLength value="30" /> 
  </xs:restriction>
  </xs:simpleType>
  </xs:element>
- <xs:element name="AddRess" minOccurs="0">
- <xs:simpleType>
- <xs:restriction base="xs:string">
  <xs:maxLength value="60" /> 
  </xs:restriction>
  </xs:simpleType>
  </xs:element>
- <xs:element name="City" minOccurs="0">
- <xs:simpleType>
- <xs:restriction base="xs:string">
  <xs:maxLength value="15" /> 
  </xs:restriction>
  </xs:simpleType>
  </xs:element>
- <xs:element name="regioN" minOccurs="0">
- <xs:simpleType>
- <xs:restriction base="xs:string">
  <xs:maxLength value="15" /> 
  </xs:restriction>
  </xs:simpleType>
  </xs:element>
- <xs:element name="PostalCode" minOccurs="0">
- <xs:simpleType>
- <xs:restriction base="xs:string">
  <xs:maxLength value="10" /> 
  </xs:restriction>
  </xs:simpleType>
  </xs:element>
- <xs:element name="Country" minOccurs="0">
- <xs:simpleType>
- <xs:restriction base="xs:string">
  <xs:maxLength value="15" /> 
  </xs:restriction>
  </xs:simpleType>
  </xs:element>
- <xs:element name="PHONE" minOccurs="0">
- <xs:simpleType>
- <xs:restriction base="xs:string">
  <xs:maxLength value="24" /> 
  </xs:restriction>
  </xs:simpleType>
  </xs:element>
- <xs:element name="Fax" minOccurs="0">
- <xs:simpleType>
- <xs:restriction base="xs:string">
  <xs:maxLength value="24" /> 
  </xs:restriction>
  </xs:simpleType>
  </xs:element>
  </xs:sequence>
  </xs:complexType>
  </xs:element>
  </xs:choice>
  </xs:complexType>
  </xs:element>
  </xs:schema>
endtext
return lcXSD
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Выгрузить в xml поэлементно? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]