Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M Новый топик    Ответить
 А почему у меня correlate не работает?  [new]
lfktk
Member

Откуда:
Сообщений: 18
Кто можеть помочь?
response из сервера:
<a:RespItem>
  <
a:bIN>123456748</a:bIN>
  <
a:dataSource>0</a:dataSource>
  <
a:fullAddress>г.xxx, Улица xxx , д.xx</a:fullAddress>
  <
a:fullName>Гос. предприятие</a:fullName>
  <
a:id>123456789456</a:id>
  <
a:code>WW15</a:code>
  <
a:rNN>987654321032</a:rNN>
</
a:RespItem>  

************************************************

<xs:complexType name="RespItem">
  <
xs:sequence>
    <
xs:element name="bIN" nillable="true" type="xs:string"/>
    <
xs:element name="dataSource" type="xs:unsignedByte"/>
    <
xs:element name="fullAddress" nillable="true" type="xs:string"/>
    <
xs:element name="fullName" nillable="true" type="xs:string"/>
    <
xs:element name="id" type="xs:long"/>
    <
xs:element name="code" nillable="true" type="xs:string"/>
    <
xs:element name="rNN" nillable="true" type="xs:string"/>
  </
xs:sequence>
</
xs:complexType>
класс в Intersystems cache:
Class user.model.RespItem Extends (%RegisteredObject%XML.Adaptor)
{
  
Parameter XMLNAME = "RespMOItem";
  
Property bIN As %String(MAXLEN ""XMLNAME "bIN");
  
Property dataSource As %xsd.unsignedByte(XMLNAME "dataSource");
  
Property fullAddress As %String(MAXLEN ""XMLNAME "fullAddress");
  
Property fullname As %String(MAXLEN ""XMLNAME "fullname");
  
Property id As %Integer(XMLNAME "id");
  
Property code As %String(XMLNAME "code");
  
Property rNN As %String(MAXLEN ""XMLNAME "rNN");
  
Property state As %String(XMLNAME "state"XMLPROJECTION "CONTENT");
}
мой код:
.....
  #dim xmlr As %XML.Reader ##class(%XML.Reader).%New()
  
xmlr.OpenStream(response)
  
xmlr.Correlate("RespItem","User.model.RespItem")

  
#dim item as User.model.RespItem
  
count=0
  
while xmlr.Next(.item,.sc{
    
count=count+1
     
count,!  
     
"name="_item.fullname,!
     
"id="_item.id,!
     
"code"_item.code,!
  
}
28 окт 15, 08:57    [18335874]     Ответить | Цитировать Сообщить модератору
 Re: А почему у меня correlate не работает?  [new]
servit
Member

Откуда: г. Кишинёв, Республика Молдова
Сообщений: 3119
Блог
lfktk
А почему у меня correlate не работает?
Чтобы увидеть ошибку, замените

xmlr.OpenStream(response)
xmlr.Correlate("RespItem","User.model.RespItem")

на

d $system.OBJ.DisplayError(xmlr.OpenStream(response))
d $system.OBJ.DisplayError(xmlr.Correlate("RespItem","User.model.RespItem"))

PS: имя класса регистрозависимо: user.model.RespItem ≠ User.model.RespItem (xmlr.Correlate("RespItem","User.model.RespItem"))
Если "response из сервера" это веб, то можно воспользоваться сразу методом OpenURL: 8140106
28 окт 15, 11:32    [18336693]     Ответить | Цитировать Сообщить модератору
 Re: А почему у меня correlate не работает?  [new]
lfktk
Member

Откуда:
Сообщений: 18
servit,

Спасибо все заработало,

ошибки здесь:
А почему у меня correlate не работает?
<a:fullName>Гос. предприятие</a:fullName>
=> Property fullname As %String(MAXLEN = "", XMLNAME = "fullname");

29 окт 15, 13:31    [18343185]     Ответить | Цитировать Сообщить модератору
Все форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M Ответить