Aplikace funguje nasledovne: Pri startu si aplikace natahne vsechny XSD ze zadaneho adresare. Pak potrebuju ke kazde XSD definici udelat validni XML message do ni vlozit potrebne hodnoty a poslat na zadanou queue.
XSD definice ktere slouzi jako vstup jsou znacne omezene. Obsahuji jen jeden ComplexType se sequenci elementu ruznych typu. Ale chapu ze tohle je specialni pripad a obecne to jiste nelze.. Postup vyuziti xjc pro vygenerovani pomocnych trid neni podle me v mem pripade vhodny.. Situace je velice podobna pripadu, kdyz by se XSD menily za behu. Je nejaky obecny postup sestavovani validnich XML message z dynamicky se menicich XSD? Dekuji za vase nazory. XSD muze vypadat takto: <?xml version="1.0" encoding="ibm852"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:complexType name="L1_L2_CyclicDataRM"> <xs:annotation> <xs:appinfo> <Transport>EMS</Transport> <MessageType>Queue</MessageType> <MessageName>ems.topic.L1_L2_CyclicDataRM</MessageName> <Timer>2000</Timer> </xs:appinfo> </xs:annotation> <xs:sequence> <xs:element name="Bucket__Brigade"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="ArrayOfString" type="xs:string"> <xs:annotation> <xs:documentation>Bucket Brigade.ArrayOfString</xs:documentation> </xs:annotation> </xs:element> <xs:element name="UInt2" type="xs:unsignedShort"> <xs:annotation> <xs:documentation>Bucket Brigade.UInt2</xs:documentation> </xs:annotation> </xs:element> <xs:element name="Boolean" type="xs:boolean"> <xs:annotation> <xs:documentation>Bucket Brigade.Boolean</xs:documentation> </xs:annotation> </xs:element> <xs:element name="Int1" type="xs:string"> <xs:annotation> <xs:documentation>Bucket Brigade.Int1</xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Square__Waves"> <xs:complexType> <xs:sequence> <xs:element name="UInt1" type="xs:byte"> <xs:annotation> <xs:documentation>Square Waves.UInt1</xs:documentation> </xs:annotation> </xs:element> <xs:element name="Real8" type="xs:double"> <xs:annotation> <xs:documentation>Square Waves.Real8</xs:documentation> </xs:annotation> </xs:element> <xs:element name="Int2" type="xs:short"> <xs:annotation> <xs:documentation>Square Waves.Int2</xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:schema> 2011/4/19 Robert Novotny <[email protected]> > Vezmime si priklad zo slovenciny. Mam gramatiku, ktora hovori, ze > slovenska veta ma mat: > > Podmet - prisudok - predmet. > > Validacia sa pyta, ci veta ,,Pes zerie granule" splna gramatiku. Vy vsak > chcete riesit problem typu ,,potrebujem vyrobit slovensku vetu". Ako ma > kniznica vediet, ci ma vygenerovat slovensku vetu ,,Pes zerie granule" alebo > ,,Vyvojar miluje Javu" alebo ,,Ja mam psa"? > > Ako sa spominalo, JAXB na zaklade XSD vyrobi triedu s instancnymi > premennymi podmet, prisudok, predmet a anotaciami zaisti, ze objekt sa > serializuje spravne a teda ze vysledne XML bude splnat schemu. > > Ako nad tym uvazujem, tak bud chcete mat v kode obmedzene, aby ste > nevymysleli nahodou spravu, ktora nedava zmysel (,,Vonku prsi"), lenze to > vam zaisti prave typovy system, ktory je reprezentovany prave triedami, > ktore su vygenerovane v JAXB. > > Vy hovorite, ze nechcete generovat ziadne triedy ,,ukladane na filesystem", > ale mne to nie je jasne. Typicky workflow znamena, ze mam XSD, v kompilacnom > kroku z neho vypadnu klasicke Java triedy a tie pouzivam uplne rovnako ako > akekolvek ine triedy. Alebo mate situaciu, ked sa XSD meni za behu? > > RN > > > > On 19. 4. 2011 14:11, Vladislav Krejčiřík wrote: > > ok, mozna jsem to spatne popsal. Zkusim znovu. Ja nechci nic validovat, > protoze nemam vlastne ani co. XSD mi definuje strukturu nejake message. Ja > bych potreboval takovou messge umet vytvorit, "vygenerovat" z XSD definice. > Myslel jsem ze bych ziskal nejakou objektovou reprezentaci te XML message > kde bych nastrkal hodnoty co potrebuju. Potom bych uz jen XML message poslal > do fronty. > > Nevim jestli existuje nejaka knihovna, ktera to umoznuje. Nebo budu muset > rucne takovou XML vystavet.. > > > > > > Dne 19. dubna 2011 12:48 Lukas "lzap" Zapletal > <[email protected]>napsal(a): > >> Vlado, >> >> myslim ze se tady snazis michat dve veci. DOM a XSD. Prvni jmenovany >> slouzi >> k manupulaci s (ted to zjednodusim) XML, druhy je urcen pro popis a >> kontrolu >> XML dokumentu. Krome jineho lze namapovat na JavaBeany a ruzne jine >> struktury zname z pocitacovych jazyku. >> >> To co asi chces je nejprve dokument zvalidovat pomoci XSD schematu >> (doporucuji ruzne tutorialy na netu), a pote jej proste a jednoudse nacist >> do DOMu a parsovat. Je mozne, ze nejaka DOM knihovna to bude umet udelat >> "v >> jednom", ale v podstate jsou to dve ruzne veci. >> >> Nebo jsem te mozna spatne pochopil. Zkus to reformulovat. >> >> http://en.wikipedia.org/wiki/Document_Object_Model >> http://en.wikipedia.org/wiki/XML_Schema_(W3C) >> >> >> ----- >> Later, >> Lukas >> -- >> View this message in context: >> http://konference-java-cz.958153.n3.nabble.com/Vytvoreni-instance-XML-objektu-z-XSD-definice-tp2837707p2838272.html >> Sent from the konference java.cz mailing list archive at Nabble.com. >> > > > > -- > > /**************************************/ > Best regards / S pozdravem > Vladislav Krejčiřík > http://www.vkrejcirik.info > > > > -- /**************************************/ Best regards / S pozdravem Vladislav Krejčiřík http://www.vkrejcirik.info
