hmm, jeg leder efter en xml-php parser som ikke lige ligner dem jeg har set
på hotscripts.com, for jeg vil gerne udnytte muligheden for en træstruktur
dog uden at læse hele filen ind i memory (ligesom DOM) og de normale xml
parsefunktioner er lavet som hvis jeg ville bruge xml'en som en 3D SQL DB (x
antal tables med y antal cols og z antal rows) men jeg vil mere,, som det
fremgår af DTD'en herunder lægger jeg op til en stor træstruktur hvor det
vil være passende hvis man kunne bede om data pr. sti,,, dette er DTD'en:
>>
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XML Spy v3.5 NT (
http://www.xmlspy.com) by () -->
<!ELEMENT vlan (admin, groups)>
<!ELEMENT admin (mpw, gcpw*)>
<!ELEMENT mpw (#PCDATA)>
<!ELEMENT gcpw (#PCDATA)>
<!ATTLIST gcpw
num NMTOKEN #REQUIRED
used (0 | 1) #REQUIRED
>
<!ELEMENT groups (grp*)>
<!ELEMENT grp (grpn, gcmnt, gmpw, gnpw, gcinfo, hosts, news)>
<!ATTLIST grp
name NMTOKEN #REQUIRED
>
<!ELEMENT grpn (#PCDATA)>
<!ELEMENT gcmnt (#PCDATA)>
<!ELEMENT gmpw (#PCDATA)>
<!ELEMENT gnpw (#PCDATA)>
<!ELEMENT gcinfo (gcts, gcip)>
<!ELEMENT gcts (#PCDATA)>
<!ELEMENT gcip (#PCDATA)>
<!ELEMENT hosts (host*)>
<!ELEMENT host (hstn, hcmnt, hpw, lli, lip, lic, hcinfo, hnews, hmail)>
<!ELEMENT hstn (#PCDATA)>
<!ELEMENT hcmnt (#PCDATA)>
<!ELEMENT hpw (#PCDATA)>
<!ELEMENT lli (#PCDATA)>
<!ELEMENT lip (#PCDATA)>
<!ELEMENT lic (#PCDATA)>
<!ELEMENT hcinfo (hcts, hcip)>
<!ELEMENT hcts (#PCDATA)>
<!ELEMENT hcip (#PCDATA)>
<!ELEMENT hnews (lnr, nsnd, authart*, artnote*)>
<!ATTLIST hnews
nnote (1 | 0) #REQUIRED
rnote (1 | 0) #REQUIRED
>
<!ELEMENT lnr (#PCDATA)>
<!ELEMENT nsnd (#PCDATA)>
<!ELEMENT authart (artname, lar)>
<!ATTLIST authart
artid NMTOKEN #REQUIRED
>
<!ELEMENT artnote (artname, lar)>
<!ATTLIST artnote
artid NMTOKEN #REQUIRED
>
<!ELEMENT artname (#PCDATA)>
<!ELEMENT lar (#PCDATA)>
<!ELEMENT hmail (lmread, lmrec, msnd, msg*)>
<!ELEMENT lmread (#PCDATA)>
<!ELEMENT lmrec (#PCDATA)>
<!ELEMENT msnd (#PCDATA)>
<!ELEMENT msg (mrec, mfrom, msubj, msgtxt)>
<!ATTLIST msg
msgid NMTOKEN #REQUIRED
>
<!ELEMENT mrec (#PCDATA)>
<!ELEMENT mfrom (#PCDATA)>
<!ELEMENT msubj (#PCDATA)>
<!ELEMENT msgtxt (#PCDATA)>
<!ELEMENT news (lnewnws, lnewrepl, noa, article*)>
<!ELEMENT lnewnws (#PCDATA)>
<!ELEMENT lnewrepl (#PCDATA)>
<!ELEMENT noa (#PCDATA)>
<!ELEMENT article (atime, afrom, asubj, artshort, arttxt, areply*)>
<!ATTLIST article
artid NMTOKEN #REQUIRED
nor CDATA #REQUIRED
>
<!ELEMENT atime (#PCDATA)>
<!ELEMENT afrom (#PCDATA)>
<!ELEMENT asubj (#PCDATA)>
<!ELEMENT artshort (#PCDATA)>
<!ELEMENT arttxt (#PCDATA)>
<!ELEMENT areply (rtime, rfrom, rtxt)>
<!ELEMENT rtime (#PCDATA)>
<!ELEMENT rfrom (#PCDATA)>
<!ELEMENT rtxt (#PCDATA)>
<<
det ville være sindsygt at skulle parse det linie for linie eller på een
gang (som de parsere gør som jeg finder på hotscripts.com)
findes der ingen parser til php som kan create/edit og outputte som
træstruktur??
fx:
$groupcomment =
functionenjeglederefter("/vlan/groups/grp(name:anygroup)/gcmnt","output")
og så den bare giver mig data fra den sti???
eller
$unusedgcpw = function("/vlan/admin/gcpw(used:0)","output")
for at få en array med alle gcpw's med attributen "used" sat til 0???
jeg ved det er en ond xml der vil komme ud af denne DTD, men det er ment til
at være hjertet i et virtual lan system,, (som jeg allerede har lavet
baseret på en god håndfuld txt filer :)
PhoX