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

Выгружаю данные из связанных курсоров через 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
Выгрузить в xml поэлементно?
    #35226994
http://forum.foxclub.ru/read.php?29,248240,313197#msg-313197

и смотри пост Aleksey Tsingauz [MSFT]
...
Рейтинг: 0 / 0
Выгрузить в xml поэлементно?
    #35227402
begginer_fox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Выгрузить в xml поэлементно?
    #35240303
beginner_fox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема немного сложнее, выгружать данные в соответствии со схемой.
Как привязать xmlAdapter к схеме, чтобы данные выгружались в соответствии с заданной схемой?

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

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


Код: 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
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Выгрузить в xml поэлементно?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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