Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]6825[/thread]

XML::Simple am weiterparsen hindern

Tags: Ähnliche Threads

Leser: 1


<< |< 1 2 >| >> 17 Einträge, 2 Seiten
eisbeer
 2005-03-29 22:11
#53058 #53058
User since
2003-08-29
347 Artikel
BenutzerIn
[Homepage] [default_avatar]
So, meine Wege führen mich auchmal wieder in dieses Forum!

Habe folgendes Problem: Meine XML Datei sieht folgendemaßen
aus:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<document path="G:\http\public\projekte\WebEND\test\test.xml">
   <meta>
       <permission allowed="*" denied="4,5">TEST</permission>
       <title text="TPL_MAKEOWN" />
   </meta>
   <content execute="tmpl">
----------------------------------------------- # nur zur Verdeutlichung
       <html>
           <head>
               <title>...</title>
           </head>
           <body>
               <p> HTML INHALT </p>
           </body>
       </html>
----------------------------------------------- # nur zur Verdeutlichung
   </content>
</document>


Ich will jetzt, dass mein Perlscript via XML::Simple (zumindest
im Idealfall XML::Simple) diese XML-Datei einließt. Eigentlich
ganz einfach, bloß dummerweise mein dieses Modul, dass das,
was im <content></content> Bereich steht, auch XML wäre
und somit mitgeparsed werden muss. Das will ich aber nicht,
ich will nämlich das, was in ebendiesem Bereich steht, durch eine
Templatemaschine schicken und dann ausgeben. Und ich will
nicht unbedingt die unschöne variante benutzen, und den
<content>-Bereichinhalt per XMLout rückzukonvertieren um
die Produktvariable dann durch die Templateanlage zu wursten
und schlussendlich an einen Browser auszugeben.

Kann ich jetzt vl per verstecktem Hinweis oder Anweisung in der
XML-Datei selbst dem Parser sagen, er soll dass, was im <content>
-Bereich steht einfach ignorieren und mir den Inhalt ebendiesem
einfach ungeparsed zurückgeben?

Oder muss ich es doch so machen und den spezifischen Inhalt
rückkonvertieren oder gar auf XML::Parser umsteigen?
Die Perlkenntnisse für XML::Parser hätte ich vielleicht grad noch,
aber dieses Modul ist in meinen Augen doch recht kompliziert,
besonders wenn man nicht viel Zeit in diese Sache stecken kann
und auch nicht will...

Natürlich sind auch jegliche andere alternativen willkommen!

Vielen Dank,
C. Jehle
Die meisten PC Probleme befinden sich zwischen Bildschirm und Stuhl...
GwenDragon
 2005-03-29 22:33
#53059 #53059
User since
2005-01-17
14510 Artikel
Admin1
[Homepage]
user image
In einem XML gibt es nur XML.
<content>...</content> ist valides XML.
Ignorieren geht nicht, XML::Simple ist eben Simpel.

Wgen des Templates, wie wärs mit XML::Template?\n\n

<!--EDIT|GwenDragon|1112121731-->
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

eisbeer
 2005-03-29 22:44
#53060 #53060
User since
2003-08-29
347 Artikel
BenutzerIn
[Homepage] [default_avatar]
Templatesystem is fix, da kann ich nix andres nehmen.

Tjaja, dann muss ich wohl herumtricksen.
Die meisten PC Probleme befinden sich zwischen Bildschirm und Stuhl...
GwenDragon
 2005-03-29 22:57
#53061 #53061
User since
2005-01-17
14510 Artikel
Admin1
[Homepage]
user image
Und wenn du es in CDATA kapselst? Ein XML Parser darf solchen Code nicht interpretieren.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<document path="G:\http\public\projekte\WebEND\test\test.xml">
  <meta>
      <permission allowed="*" denied="4,5">TEST</permission>
      <title text="TPL_MAKEOWN" />
  </meta>
  <![CDATA[
  <content execute="tmpl">
----------------------------------------------- # nur zur Verdeutlichung
      <html>
          <head>
              <title>...</title>
          </head>
          <body>
              <p> HTML INHALT </p>
          </body>
      </html>
----------------------------------------------- # nur zur Verdeutlichung
  </content>
]]>
</document>


Oder eine eigene angepasste DTD - da muss ich aber gerade passen.\n\n

<!--EDIT|GwenDragon|1112123250-->
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

eisbeer
 2005-03-29 23:37
#53062 #53062
User since
2003-08-29
347 Artikel
BenutzerIn
[Homepage] [default_avatar]
Dann hab ich aber keinen Zugriff mehr auf den HTML-Teil...
Die meisten PC Probleme befinden sich zwischen Bildschirm und Stuhl...
GwenDragon
 2005-03-30 00:07
#53063 #53063
User since
2005-01-17
14510 Artikel
Admin1
[Homepage]
user image
Ich habe mit dem folgenden Skript getestet:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/local/bin/perl -w

use strict;
use warnings;

use Data::Dumper;
use XML::Simple;

my $file = shift;

my $xs = new XML::Simple();

my $ref = $xs->XMLin( $file );

print Dumper ($ref);

1;


Diese XML-Datei
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<document path="G:\http\public\projekte\WebEND\test\test.xml">
 <meta>
   <permission allowed="*" denied="4,5">TEST</permission>
   <title text="TPL_MAKEOWN" />
 </meta>
 <![CDATA[
 <content execute="tmpl">
   <html>
     <head>
       <title>...</title>
     </head>
     <body>
       <p>HTML INHALT</p>
     </body>
   </html>
 </content>
]]>
</document>
wird mit XML::Simple folgendermaßen geparst:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$VAR1 = {
         'content' => '

 <content execute="tmpl">
   <html>
     <head>
       <title>...</title>
     </head>
     <body>
       <p>HTML INHALT</p>
     </body>
   </html>
 </content>

',
         'path' => 'G:\\http\\public\\projekte\\WebEND\\test\\test.xml',
         'meta' => {
                   'permission' => {
                                   'allowed' => '*',
                                   'content' => 'TEST',
                                   'denied' => '4,5'
                                 },
                   'title' => {
                              'text' => 'TPL_MAKEOWN'
                            }
                 }
       };

Da kommst du doch an den Inhalt von Content dran und kannst den an das Template-Modul weiterleiten! ???
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

GwenDragon
 2005-03-30 00:08
#53064 #53064
User since
2005-01-17
14510 Artikel
Admin1
[Homepage]
user image
Wie ist denn deine Aufgabenstellung?

XML-Datei --> XML-Parser --> HTML-Template

Oder wie oder was?\n\n

<!--EDIT|GwenDragon|1112127204-->
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

eisbeer
 2005-03-30 03:02
#53065 #53065
User since
2003-08-29
347 Artikel
BenutzerIn
[Homepage] [default_avatar]
Quasi. Aber in der XML Datei soll sehr dynamisches HTML-Template stehen. (use Template; die URL fehlt mir grad)
und die meta-daten quasi steuerbefehle für die ausführung der templates sein. ich hab eine relativ große homepage
eines vereins, die dynamisch sein soll. jetzt will ich nicht ein zentrales perl-skript haben (so á la www.verein.de?index.pl?show=satzung)
dass alle seiten per get-parameter aus einer DB o.ä. klamüsert, sondern
xml dateien, die bei aufruf von meinem apache an ein perlscript geleitet werden. z.B. "news.xml" - enthält metadaten zum
Haupttemplate, in das der content eingebettet werden soll, zu dem Pfad, den wegen mir zB die breadcrumbs ausgeben sollen,
oder ob in der spalte am rechten rand nochmal zusätzlich der newsticker stehen soll. ausserdem enthalten: der eigentlich
Inhalt des newsscripts, dass auch aus einer datenbank die neusten nachrichten ausließt und zum besten gibt. Dieses zentrale
parse-perlscript würde dann halt die XML-Dateien verarbeiten.

Vielleicht gibt es sowas ja schon, bzw. ich weis das es solche systeme, die auch auf anderen techniken basieren gibt,
aber irgendwie stellt mich keins zufrieden...

Wenn ihr da was besseres habt, belehrt mich bitte!

Gruß und gute Nacht,
Claudi
Die meisten PC Probleme befinden sich zwischen Bildschirm und Stuhl...
GwenDragon
 2005-03-30 13:43
#53066 #53066
User since
2005-01-17
14510 Artikel
Admin1
[Homepage]
user image
Und HTML::Mason ausprobiert?
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

eisbeer
 2005-03-30 16:28
#53067 #53067
User since
2003-08-29
347 Artikel
BenutzerIn
[Homepage] [default_avatar]
Mit Mason kommt zwar eine ellenlange Docu, aber - entweder bin ich blind oder blöd - kein einziges Beispiel, wie ich mason
anwenden soll...
Die meisten PC Probleme befinden sich zwischen Bildschirm und Stuhl...
<< |< 1 2 >| >> 17 Einträge, 2 Seiten



View all threads created 2005-03-29 22:11.