parser un document xml/xhtml
Bonjour,
J'ai un fichier xhtml qui en gros ressemble a cela:
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
<?xml version="1.0" encoding="utf-8"?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
...
</head>
<div class="text">
<p><span><span> paragraphe1 </span></span></p>
<p><span><span> paragraphe2 </span></span></p>
</div> |
je souhaiterai transformer ce fichier pour obtenir cela en sortie:
Code:
1 2 3 4 5
|
<P>
paragraphe1
<P>
paragraphe2 |
Je recherche un parser xml/xhtml qui me permettrait de faire cela simplement. Je prefere utiliser un parser car par la suite j'aurai peut etre d'autres manipulation a realiser.
pour le moment j'ai tenter d'utiliser Mojo:DOM mais cela ne renvoi rien:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
#!/usr/bin/env perl
use strict;
use warnings;
use feature 'say';
use Mojo::DOM;
# slurp all DATA lines
my $dom = Mojo::DOM->new(do { local $/; <DATA> });
say $_->text for $dom->at('.text')->find('p')->each;
__DATA__
<div class="text">
<p><span><span><span>para1</span></span></span></p>
<p><span><span><span>para2</span></span></span></p>
</div> |
merci
Peut-on acceder directement a une valeur d'un champ XML
Bonjour,
J'aurais une question concernant le lecture d'un champ XML:
J'ai un xml de la forme
----------------------------------------------------------------------
<General>
<Code name="ZA1">
<Type>BINARY</Type>
</Code>
<Code name="Y61">
<Type>BINARY2</Type>
</Code>
<Code name="Z61">
<Type>BINARY3</Type>
</Code>
</General>
---------------------------------------------------------------------------
Le scirpt Perl lit un fichier texte qui conrtient le "Code name", (ZA1,Y61,Z61,...) et je doit récupérer le "Type" dans le xml.
J'utilise avec XML::Simple
Pas de problème pour le récupéerer en faisant :
-----------------------------------------------------
my $parser = XML::Simple->new();
$monxml=toto.xml;
my $xml=$parser->XMLin($monxml, keyattr=>['General']);
my $xmlgeneral=$xml->{General};
my $Code=$xmlgeneral->{Code};
foreach my $fab (@{$Code}) {
if ($fab->{name} eq "$mavaleur") { # $mavaleur sera soit ZA1,Y61,Z61,...
print "Product type found ".$fab->{Type}."\n";
}
}
Mais je voudrais savoir s'il est possible de récupérer la valeur du tag <Type> sans passer par une boucle foreach
J'ai essayer plusieurs syntaxe du style $Code->$mavaleur->{Type} mais sans succés.
Merci,