Toon posts:

[Perl XML::DOM]

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik heb een xml file die er als volgt uit ziet:
code:
1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0"?>
<DOCUMENT>
   <elmnt>
      <id>1</id>
      <name>qwerty</name>
      <characteristics>
         <characteristic>bla1</characteristic>
         <characteristic>bla2</characteristic>
      </characteristics>
   </elmnt>
</DOCUMENT>


nu wil ik een soortgelijk element toevoegen, maar ik kom er niet uit.

ik heb de volgende code, ik probeerde een element toevoegen met alleen de id om te kijken of dit werkt, maar helaas.
code:
1
2
3
4
5
6
7
8
9
10
11
12
use XML::DOM;

my $file = 'elements.xml';
my $parser = XML::DOM::Parser->new();
my $element_list = $parser->parsefile($file);

my $value = 9;

$element_list->createElement('elmnt');
$element_list->createElement('id')->appendChild($value);

print $element_list->toString();

[ Voor 120% gewijzigd door Verwijderd op 19-08-2005 19:57 ]


  • dingstje
  • Registratie: Augustus 2002
  • Laatst online: 02-01-2024
Krijg je een foutmelding (welke?)? Wat gebeurt er precies? Wordt er iets gechreven (wat?)? Kortom: waarom zeg je dat het fout gaat, waarop basseer je je om dat te zeggen.

If you can't beat them, try harder


Verwijderd

Topicstarter
ik doe aan het eind een toString() van de tree die ik uitprint (was ik vergeten bij te zetten), maar de tree is dan nog onveranderd (niets is toegevoegd).

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 22:26

Creepy

Tactical Espionage Splatterer

Het zal wel aan mij liggen, maar je bent aan het toevoegen aan $element_list, en vervolgens druk je $macro_list af. Dat lijkt me toch vrij logisch dat er niks gebeurd ;)

Ik gok op een typefout in de code hierboven. Pak je echte code er eens bij, loop stap voor stap de code eens door (of druk stap voor stap de inhoud van de gebruikte variabelen af) en kijk eens wat er precies gebeurd. Grote kans dat je door het debuggen van je code zelf je probleem oplost :)

[ Voor 48% gewijzigd door Creepy op 19-08-2005 19:19 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
Creepy schreef op vrijdag 19 augustus 2005 @ 19:10:
Het zal wel aan mij liggen, maar je bent aan het toevoegen aan $element_list, en vervolgens druk je $macro_list af. Dat lijkt me toch vrij logisch dat er niks gebeurd ;)
is aangepast, was namelijk gewoon een tikfout....sorry :)


er valt niet veel stap voor stap te doen, want dat is juist wat ik hier aan het doen ben. ik wil namelijk het nieuwe element (elmnt) stap voor stap toevoegen, dus eerst alleen een id en dan printen, maar dat gebeurt al niet.

Verwijderd

Topicstarter
ik heb nu dit stukje code:

code:
1
2
3
4
5
6
7
8
9
10
11
use XML::DOM;

my $file = 'elements.xml';
my $parser = XML::DOM::Parser->new();
my $element_list = $parser->parsefile($file);
my $tmp;

$tmp = $element_list->createElement('elmnt');
$element_list->appendChild($tmp);

print $element_list->toString();


ik probeer hiermee een volledig lege <elmnt> toe te voegen, maar ik krijg de volgende foutmedling:
XML::DOM::DOMException(Code=3, Name=HIERARCHY_REQUEST_ERR, Message=document can have only one Element)

Verwijderd

Topicstarter
ik ben inmiddels ietsje verder gekomen.

deze code:
code:
1
2
3
4
5
6
7
8
9
10
11
use XML::DOM;

my $file = 'elements.xml';
my $parser = XML::DOM::Parser->new();
my $element_list = $parser->parsefile($file);
my $tmp;

$tmp = $element_list->createElement('elmnt');
$element_list->getDocumentElement->appendChild($tmp);

print $element_list->toString();


maakt de volgende boom:
code:
1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0"?>
<DOCUMENT>
   <elmnt>
      <id>1</id>
      <name>qwerty</name>
      <characteristics>
         <characteristic>bla1</characteristic>
         <characteristic>bla2</characteristic>
      </characteristics>
   </elmnt>
<elmnt/></DOCUMENT>
Pagina: 1