1 Son düzenleyen, mrduyar (07.06.2012 10:44:14)

Konu: Xml to Cursor

Selamlar;
Elimde başka bir program oluşturduğu bir xml dosyası var( ek dosyada g04.xml). Bunu cursor e çevirmek istiyorum.
Araştırmalarım sonucunda;
xml den xsd oluşturdur. (ek dosya new_g04.xsd)  http://www.flame-ware.com/products/xml- … fault.aspx
Aşağıdaki kod ile cursor oluşturabileceğimi anladım. Ancak 2. cursor den sonra hata veriyor. (2097  "XMLTable object does not have associated fields.")
Mümkünse XML i xsd oluşturmadan nasıl cursor e çevirebilirim.
Veya aşağıdaki koddaki hata mesajını nasıl geçebilirim.
Şimdiden teşekkürler.

Visual Fox Pro
LOCAL loAdapter as XMLAdapter

loXMLAdapter = CREATEOBJECT("XMLAdapter")
jcFile = GETFILE('XML', 'Browse to locate the XML file')
jcXSDFile = GETFILE('XSD', 'Browse to locate the SCHEMA file')
loXMLAdapter.XMLSchemaLocation = jcXSDFile
*loXMLAdapter.RespectNesting = .T.
IF loXMLAdapter.LoadXML(M.jcFile, .T., .T.)
  ? "The Number of Tables Read is " + TRANSFORM(loXMLAdapter.Tables.Count)
  IF loXMLAdapter.Tables.Count > 0
    FOR jnIndx = 1 TO loXMLAdapter.Tables.Count
      ? "Table " + LTRIM(STR(M.jnIndx)) + ": " + loXMLAdapter.Tables[M.jnIndx].Alias
      loXMLAdapter.Tables.Item[M.jnIndx].ToCursor() && burada 2097  "XMLTable object does not have associated fields."
      BROWSE
    ENDFOR
  ENDIF
ENDIF
loXMLAdapter = .NULL.
RETURN
İleti eklentileri

g04.xml 3 kb, 3 kez indirildi, 2012-06-07 tarihinden itibaren 

new_g04.xsd 2.45 kb, dosya hiç indirilmedi. 

Bu iletideki eklenti/leri indirmeye yetkiniz yok.
Bilmediğin Neyse Yanıldığındır.

2

Re: Xml to Cursor

Visual Fox Pro
Local lcXML,lcCursor

lcXML=Getfile("xml","XML File Dosyası Adı..","Seç")
lcCursor=Sys(2015)
If ! Empty(m.lcXML)
    Xmltocursor(m.lcXML,m.lcCursor,512)
    Browse Normal
Endif

3 Son düzenleyen, mrduyar (07.06.2012 11:03:33)

Re: Xml to Cursor

soykanozcelik yazdı:
Visual Fox Pro
Local lcXML,lcCursor

lcXML=Getfile("xml","XML File Dosyası Adı..","Seç")
lcCursor=Sys(2015)
If ! Empty(m.lcXML)
    Xmltocursor(m.lcXML,m.lcCursor,512)
    Browse Normal
Endif

Bunu denedim zaten.İstediğim sonucu alamıyorum.
XML içinden 5 adet cursor oluşması gerekiyor.
Ek xml dosya ile denediğinde sonuc; Sadece 1 adet oluşturuyor içerikte mantıklı değil.

Bilmediğin Neyse Yanıldığındır.

4

Re: Xml to Cursor

Merhaba
Web sayfasından düzenli olarakgelen bir xml i okumak istiyorum. Oluşturduğum xml leri veya örnek xml lerde sorun yaşamıyorum. ancak webden gelen xml'i okumak istediğim
"Belgenin üst düzeyinde geçersiz. line1, position 1 dosya adi" mesajı geliyor fakat xml fazla hakim olamadığım için bu satırdaki hatayı algılayamıyorum.

xmlin  notpad ile görülen içeriği


<!--  RSS generated by JIRA (Enterprise Edition, Version: 3.13-#330) at Tue Jun 05 12:09:31 EEST 2012 -->
<!-- If you wish to do custom client-side styling of RSS, uncomment this:
<?xml-stylesheet href="http://jira.innova.com.tr/styles/jiraxml2html.xsl" type="text/xsl"?>
-->
<rss version="0.92" >
<channel>
    <title>Innova IT Solutions Bug Tracking System</title>
    <link>http://jira.innova.com.tr/secure/IssueNavigator.jspa?reset=true&amp;pid=10471&amp;sorter/field=issuekey&amp;sorter/order=DESC</link>
    <description>An XML representation of a search request</description>
    <language>en-uk</language>     <issue start="0" end="102" total="102" />     <build-info>
        <version>3.13</version>
        <build-number>330</build-number>
        <build-date>27-08-2008</build-date>
        <edition>Enterprise</edition>
    </build-info>

5

Re: Xml to Cursor

2097  "XMLTable object does not have associated fields." hata mesajı ile ilgili bilgi verebilecek kimse yokmu?

Bilmediğin Neyse Yanıldığındır.

6

Re: Xml to Cursor

İstediğim gibi olmadı ama yinede kendimce çözüm ürettim.

Visual Fox Pro
LcYol='F:\MAKINATAKIP\'

Adir(aimagelist,LcYol+"*.*")
Create Cursor dosyaadlari1 (dalan c(50))
For ix=1 To Alen(aimagelist,1)
    Insert Into dosyaadlari1 Values (aimagelist[ix,1])
Endfor
Select * From dosyaadlari1 Where Right(Alltrim(dalan),3)="xml" Into Cursor Crtampon1
If Reccount('Crtampon1')=0
    Messagebox('Aktarılacak Kayır Yok.')
    Return
Endif
Create Cursor CrAktar1 (f1 c(50),f2 c(50),f3 c(50),f4 c(50),dosyaadi c(50),Makina c(20),tarih T,Acik_sure N(8,2),Calisan_sure N(8,2),Verim N(5,2))
Select Crtampon1
Locate
Scan
*    lclocalfile ="g07.xml"
    lclocalfile =LcYol+Alltrim(Crtampon1.dalan)
    tcxml = Filetostr(m.lclocalfile)
    Local lcShiftcode,lnalisfiyati
    lnalisfiyati=0
    Local Array areplacement[OCCURS('<Shift ',m.tcXML),6]
    For ix=1 To Occurs('<Shift ',m.tcxml)
        lcShiftcode = Strextract(m.tcxml,'<Shift ','</Shift>',m.ix,1+4)
        areplacement[m.ix,1] = Strextract(Getwordnum(m.lcShiftcode,2),'"','"')
        areplacement[m.ix,2] = Strextract(Getwordnum(m.lcShiftcode,3),'"','"')
        areplacement[m.ix,3] = Strextract(m.lcShiftcode,'<ServerRunTime>','</ServerRunTime>')
        areplacement[m.ix,4] = Strextract(m.lcShiftcode,'<MachineRunTime>','</MachineRunTime>')
        areplacement[m.ix,5] = Crtampon1.dalan
        areplacement[m.ix,6] = SUBSTR(Crtampon1.dalan,9,3)
    Endfor
    Insert Into CrAktar1 From Array areplacement
    Rename (LcYol+Alltrim(Crtampon1.dalan)) To LcYol+"*.OKK"
    Wait Window (Alltrim(Crtampon1.dalan)+ ' Sisteme Aktarıldı.') Nowa
Endscan
 
Select CrAktar1
Replace All tarih With Datetime(Val(Left(f1,4)),Val(Substr(f1,5,2)),Val(Substr(f1,7,2)),;
    VAL(Left(f2,2)),Val(Substr(f2,3,2)),Val(Substr(f2,5,2)))
Replace All Acik_sure          With Val(f3)/3600
Replace All Calisan_sure     With Val(f4)/3600
Replace All Verim              With (Calisan_sure/Acik_sure)*100
 
SELECT makina,tarih,Acik_sure ,Calisan_sure ,verim FROM CrAktar1 GROUP BY 1,2  ORDER BY 1 INTO CURSOR CrSonuc
Bilmediğin Neyse Yanıldığındır.

7

Re: Xml to Cursor

Sorunumu geçici olarak çözdüm.
2097  "XMLTable object does not have associated fields." hata mesajının çözümünü merak etmekteyim.

Bilmediğin Neyse Yanıldığındır.