| |
|
|
Christian Hahn | ¡Hola a todos,
ha alguien una Concepto cómo XML/XHTML Dokumente en una Verzeichnisbaum (DOM) einlesen, bearbeiten y otra vez speichern kann? Ideal dafür währe de "Pascal" TvConti1. Am besten es wahrscheinlich una Umsetzung en Ensamblador, wegen Geschwindigkeit, oder hay ya Module (DLL?). Das XML Formato findet sí siempre mehr Verbreitung y uno debería así auch en XProfan algo anfangen puede, especialmente en lo que sí freie XSLT-Prozessoren para Umwandeln en otro Datenformate (z.B. [...] ) son, así puede ser auch el Wohlgeformtheit prüfen.
Mi Vorstellung: XML Expediente en Baum invitar -> Elemente einfügen, löschen oder bearbeiten -> como XML speichern y/oder encima XSLT-Prozessor como z.B json exportieren
Auf cada Fall Yo no Plan!
Einen guten Resbalón y viel Erfolg en el Jahr 2010 wünscht Christian Hahn |
|
|
| |
|
|
|
| Irgendwo Tuve veces a la einfachen XML-Parser Nuevo, hier podría uno zwischen Objekten, Nodes, ... unterscheiden y simplemente propio Métodos einfügen - finds no... war glaube después de [...] entstanden.
Egal, "heute sería ego eh anders machen" - así una xml.inc para XProfan existiert desafortunadamente (todavía) no aber wäre spätestens con [...] una Parser esta programmierbar el auch blitzschnell ser podría.
Wenn Interesse, entonces kann Yo así una pequeña XML-Parser später auch otra vez vormachen. Um el Baum innerprogrammlich a "merken" (no Darstellung!) y para einfache Handhabung beim Einfügen/Löschen/Editar de Nodes, sería Yo aber una einfache ListBox nehmen deren Einträge z.B. al Ende una Einrückungszähler besitzen. Somit liesse se auch blitzschnell Suchen.
Das Carta entonces de XML es una eigener Spass, braucht uno aber auch no Libs oder DLL para - einfaches XML-Zeugs en XProfan sería I <300 Zeilen schätzen also kleine Fleißarbeit.
Das Aufwändigste wäre imho una schöner Editor!
Vlt. ha Roland aber auch para XProfan12 algo para Thema XML en el Petto, wer weiß. |
|
|
| |
|
|
|
Christian Hahn | So una Parser wäre ya no schlecht. Lo besteht auch todavía el Möglichkeit encima una AktiveX-Objeto (msxml.dll) encima "Pascals" OcxPackage. Nur blicke Yo en DLL todavía viel weniger por. |
|
|
| |
|
|
|
| Z.B.:
+ Expediente en String invitar + Cuerdas en el String en Platzhalter tauschen z.B. x01ID y así rausfiltern (q a q suchen a kein q mehr enthalten) + Alle Tabs y Doppelten Freizeichen o. unnütze Signo con Translate$ lünchen solange a no mehr como + Explode(upper(s),"<")
... y Usted hast schonmal el Schlimmste encima native Schleifen abgearbeitet - also bastante fix.
Das zurückgegebene Array kann nun simplemente runtergerasselt voluntad de uno Función, el sólo todavía einzelne Anweisungen/Cuerdas verarbeiten muss y no mehr el problema ha, sólo todavía el XML a parsen. |
|
|
| |
|
|
|
Uwe ''Pascal'' Niemeier | Hi Personas!
Wenn Yo zweimal en un Hilo erwähnt voluntad, muß Yo mich sí informe
Tatsächlich puede ser por ActiveX anscheinend muy simplemente XML zugreifen: KompilierenMarcaSeparaciónwindow 700,500--Infos gefunden bei MSDN unter "XML DOM Objects/Interfaces "
$H Windows.ph
$H ocx3a.ph
$I ocx3a.inc
$I ocxInfo.inc--Zu Analysezwecken
ocxInit()
declare NodeList&
var Xml&=ocxCreate("Msxml2.DOMDocument")--oder Msxml2.FreeThreadedDOMDocument ?
ocxBrowse(Xml&)
var File$="X:Books.xml"--Demo-Datei; gibts bei MSDN; enthält anscheinend Infos über Bücher
ocxMethod(Xml&,"load",File$)
print File$
print "Name :",ocxGet(Xml&,"NodeName")
print "Type :",ocxGet(Xml&,"NodeTypeString")
print "Value :",ocxGet(Xml&,"NodeValue")
NodeList&=ocxGet(Xml&,"childNodes")---------Sammlung von ChildNodes
ocxBrowse(NodeList&)
print "Childs:",ocxGet(NodeList&,"length")--Anzahl Nodes in NodeList
ocxRelease(NodeList&)
print
print "Child1"
var Child1&=ocxGet(Xml&,"firstChild")
ocxBrowse(Child1&)
print "Name :",ocxGet(Child1&,"NodeName")
print "Type :",ocxGet(Child1&,"NodeTypeString")
print "Value :",ocxGet(Child1&,"NodeValue")
NodeList&=ocxGet(Child1&,"childNodes")
print "Childs:",ocxGet(NodeList&,"length")
ocxRelease(NodeList&)
print
print "Child2"
var Child2&=ocxGet(Child1&,"nextSibling")
ocxBrowse(Child2&)
print "Name :",ocxGet(Child2&,"NodeName")
print "Type :",ocxGet(Child2&,"NodeTypeString")
print "Value :",ocxGet(Child2&,"nodeValue")
NodeList&=ocxGet(Child2&,"childNodes")
print "Childs:",ocxGet(NodeList&,"length")
ocxRelease(NodeList&)
ocxDeInit()--Alle ausstehenden Freigaben erfolgen hier
waitkey
Das Problema es: Yo habe algo como de ni idea de XML... Wenn Yo el correcto sehe, se como así ne Art de Directorio-Struktur gespeichert? Mit Parents y Children?
Tiempo bastante allgemein a ocx: Damit läßt se praktisch alles umsetzen, qué auch con irgendeiner Scriptsprache posible es. Wenns also Beispiele para VBS oder JS son...
HTH Pascal |
|
|
| |
|
|
|
Jörg Sellmeyer | Hast Usted el ocxinfo.inc auch ya irgendwo hochgeladen?
Ok - gefunden: [...]
Hm - en me krachts beim ersten ocxGet(Child1&,"NodeName") |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 30.12.2009 ▲ |
|
|
|
|
Uwe ''Pascal'' Niemeier | Hi Jörg!
Laß dir el ermittelten ObjektHandles ausgeben; como es wahrscheinlich ne Null dazwischen. Im Zweifelsfall müßtest du veces una betroffene XML bereitstellen.
Posesiones inzwischen algo rumgebastelt: KompilierenMarcaSeparaciónwindow 700,500
$H Windows.ph
$H ocx3a.ph
$I ocx3a.inc
$I ocxInfo.inc---Zu Analysezwecken (ocxName)
proc Auflisten---------------------------------------------Auflisten
parameters ParentNode&,TvRoot&
declare Node&
var Name$=ocxGet(ParentNode&,"NodeName")
var Wert$=ocxGet(ParentNode&,"NodeValue")
var Type$=ocxName(ParentNode&)--aus ocxInfo.inc
var Text$="Name:"+Name$+" / Type:"+Type$+" / Wert:"+Wert$
TvRoot&=TreeView("InsertItem",Tv&,TvRoot&,0,Text$)
settext %hwnd,"Einträge: "+str$(getcount(Tv&))
var NodeMap&=ocxGet(ParentNode&,"attributes")
if NodeMap&-------wird *nicht* leer erzeugt außer bei <author/> in Wiedergabelisten!
whileloop 0,ocxGet(NodeMap&,"length")-1
Node&=ocxGet(NodeMap&,"Item",&loop)
Name$=ocxGet(Node&,"NodeName")
Wert$=ocxGet(Node&,"NodeValue")
Type$=ocxName(Node&)--aus ocxInfo.inc
Text$="Name:"+Name$+" / Type:"+Type$+" / Wert:"+Wert$
TreeView("InsertItem",Tv&,TvRoot&,0,Text$)
ocxRelease(Node&)
endwhile
TreeView("SetChildren",Tv&,TvRoot&,1)
ocxRelease(NodeMap&)
endif
var NodeList&=ocxGet(ParentNode&,"childNodes")
var Count%=ocxGet(NodeList&,"length")
if Count%---------NodeList wird auch *leer* erzeugt!
TreeView("SetChildren",Tv&,TvRoot&,1)
whileloop 0,Count%-1
Node&=ocxMethod(NodeList&,"Item",&loop)
Auflisten(Node&,TvRoot&)--rekursiver Aufruf *dieser* PROC
ocxRelease(Node&)
endwhile
endif
ocxRelease(NodeList&)
endproc-------------------------------------------------------------
var File$="X:Books.xml"-----------------Demo-Datei von MSDN
var File$="X:Delain - April Rain.wpl"--WMP-Wiedergabeliste + Schleichwerbung ;-)
var File$="X:Manifest.xml"-------------externes Manifest
var File$="RES://X:PROFAN.EXE/24/1"----internes(!) Manifest
var Tv&=create("TreeView",%hwnd,0,10,10,600,400)
sendmessage(Tv&,$111B,20,0)-- Höhe 20 px sieht besser aus
ocxInit()
var Xml&=ocxCreate("Msxml2.DOMDocument")
ocxMethod(Xml&,"load",File$)
Auflisten(Xml&,0)
ocxRelease(Xml&)
ocxDeInit()
ref='./../../funktionsreferenzen/XProfan/waitkey/'>waitkey
Scheint doch bastante interessant a ser, si uno sieht, qué alles en diesem Formato gespeichert se
HTH Pascal |
|
|
| |
|
|
|
Jörg Sellmeyer | Yo el Books.xml de hier [...] verwendet. Mit Deinem neuen Code bekomme Yo genau una Eintrag
|
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 30.12.2009 ▲ |
|
|
|
|
Uwe ''Pascal'' Niemeier | Hi Jörg!
Hier todavía una Minimal-Ejemplo: KompilierenMarcaSeparaciónwindow 700,200
$H Windows.ph
$H ocx3a.ph
$I ocx3a.inc
$I ocxInfo.inc
ocxInit()
var File$="X:Books.xml"
var Document&=ocxCreate("Msxml2.DOMDocument")
print "Document :",ocxName(Document&),Document&
print "Load :",ocxMethod(Document&,"load",File$)----- OK = -1
print "HasChildren:",ocxMethod(Document&,"hasChildNodes")-- OK = -1
print
var NodeList&=ocxGet(Document&,"childNodes")
print "NodeList :",ocxName(NodeList&),NodeList&
print "Children :",ocxGet(NodeList&,"length")
print
var Child1&=ocxGet(NodeList&,"Item",0)
print "Child1 :",ocxName(Child1&),Child1&
print
var Child2&=ocxGet(NodeList&,"Item",1)
print "Child2 :",ocxName(Child2&),Child2&
ocxDeInit()
waitkey
SeeYou Pascal |
|
|
| |
|
|
|
Jörg Sellmeyer | Es el Ergebnis:
Hier es una manifest.xml, el en me funktioniert:
<?xml version="1.0" encoding="utf-8" ?>
<Package>
<Files Time="2001-07-20T23:29" Version="6.10.0016.1624" UIVer="1" PVersion="1616.24">
<Group Name="Critical" Url="..%2F..">
<File Name="Setupmsn9xmig.dll" Hash="006066179165170056004117042027217067195106042074181195074251" Size="3113" />
<File Name="Setupmigrate.dll" Hash="120148054021128063087048224016070163125174141252154003252201" Size="6016" />
<File Name="Setupmsnunin.exe" Hash="147181051126107112026028028084075160235154203200136161005023" Size="10240" />
<File Name="Setupmsnupgrd.inf" Hash="125086141049240177093045079083031044130029053183152029117245" Size="1047" />
<File Name="update.exe" Hash="126176124138080243188000135117163158226243039019180233159055" Size="30385" />
<File Name="msn6.exe" Hash="006149214051173132208153170250222117015068119056143216146188" Size="35941" />
<File Name="msnmetal.dll" Hash="139222237220200125099180190237204090177042208036217100012005" Size="453887" />
<File Name="msnmetal.we" Hash="023243225112125023248001254127119245124186015087165002176133" Size="150" />
<File Name="msnmetal.jcf" Hash="015082022006163004024136080243235247076003053095217200074128" Size="335" />
<File Name="msnmtllc.dll" Hash="103213015196175139233189196084105224143197025191111198183128" Size="17437" />
<File Name="msdbx.dll" Hash="118134049132248230089107171240054011219203181122100015218171" Size="26934" />
<File Name="msmom.dll" Hash="060102191237075219042245223186161015180130062254109078088100" Size="157792" />
<File Name="mail.mar" Hash="240014088069073059201007196194061011152057227206204109232016" Size="364421" />
<File Name="msnspell.dll" Hash="203223218164002229225023241251048233169021174054217028190124" Size="40259" />
<File Name="ui.mar" Hash="117215007222123179218106170148139080251180197208206017209118" Size="753415" />
<File Name="themedef.mar" Hash="105202095191069095207180200130060011062116142182209018157136" Size="1685601" />
<File Name="online.wav" Hash="104075253182074126235179186237223025242101123104127176099234" Size="5451" />
<File Name="newalert.wav" Hash="083176106012043122243127129126094248126132072119131170165188" Size="5993" />
<File Name="newemail.wav" Hash="005174229057034062223137093022068055019033213065145087120025" Size="12673" />
<File Name="highcont.mar" Hash="183070080040218235143191194023106061103073214238009061033043" Size="14799" />
<File Name="logonmgr.dll" Hash="135103147080221162183118122093044129001050062038033076163233" Size="90407" />
<File Name="custdial.dll" Hash="068197186065205130048225193223009014097071087039064217251197" Size="5509" />
<File Name="popc.dll" Hash="228027200152051028162196005143045144236188237126077185076057" Size="37117" />
<File Name="csapi3t1.dll" Hash="071164211144136204149196127251168194082167196207073147167145" Size="25151" />
<File Name="sqdll.dll" Hash="001093243247112100005123020104046218078008216203154190233234" Size="48088" />
<File Name="migrate.dll" Hash="247106073105042095245071185154082231193238002156159027212163" Size="19934" />
<File Name="migrate.ini" Hash="165211176093249061213227078043167068055207226170130128217126" Size="1478" />
<File Name="msnread.htm" Hash="225174234203141194067230004236015066081162117205112132253151" Size="2636" />
<File Name="copymar.exe" Hash="037246075051221141152118110018039042171016246196076208013015" Size="30922" />
<File Name="msnms.ico" Hash="174088073234197219042105240147080251069093080241103116041014" Size="11132" />
<File Name="msncpq.ico" Hash="072052134122204103095084055034249090099123099023110222102238" Size="1587" />
<File Name="msndell.ico" Hash="233196142148081218026231250137196189025117213114158034229226" Size="2036" />
<File Name="msnemail.ico" Hash="079065027154132221009120228254187076034146096227241035228056" Size="9619" />
<File Name="dw.exe" Hash="203116166131183102034228049251132066110211089229169235150092" Size="79577" />
<File Name="dwprivacy.hta" Hash="246046109212201060072014018055060076199018235160144093155023" Size="422" />
<File Name="license.txt" Hash="177073050057003031039245181059059064051016183241076160127015" Size="3476" />
<File Name="1031dwintl.dll" Hash="002231003043088016210131193244062125011131157246035230242221" Size="6619" />
<File Name="signup.mar" Hash="225029173094124230228029251215250191045068229139070026127072" Size="149313" />
</Group>
<Group Name="Market" Url="..">
<File Name="market.mar" Hash="090164182255085249018042253002090236154170121128151046207011" Size="138373" />
<File Name="market.ini" Hash="124027011004043154130249070156143013233094135078250128200114" Size="177" />
</Group>
<Group Name="Brand">
<File Name="Setupmsn.inf" Hash="209137000128079246159003094191074002224238030003105180194219" Size="4052" />
</Group>
<Group Name="Messenger" Url="..%2F.." SetupExe="mmssetup.exe" Size="769976" Version="3,6,0,26">
<File Name="mcmess.dll" Hash="9,2000,1110,1" />
<File Name="msgsc.dll" Hash="3,6,0,26" />
<File Name="msgslang.dll" Hash="3,6,0,26" />
<File Name="msgsmigr.dll" Hash="3,6,0,26" />
<File Name="msgstrst.dll" Hash="3,6,0,26" />
<File Name="msmsgs.exe" Hash="3,6,0,26" />
<File Name="n2pcli.dll" Hash="2,1,16,0" />
</Group>
</Files>
</Package>
|
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 30.12.2009 ▲ |
|
|
|
|
Uwe ''Pascal'' Niemeier | Hi Jörg!
Auch con deiner XML no Problemas Anscheinend se en dir el Expediente no geladen. Überprüf doch veces el Dateipfad! (Hab sí - como siempre - no Fehlerabfrage instalado)
BTW:...räusper... el X: antes Books.xml es mein Laufwerk y ha nichts con el Características a tun... Hätte Yo tal vez erwähnen debería...
HTH Pascal |
|
|
| |
|
|
|
| |
|
| |
|
|