Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Reading and updating XML

by prashantktyagi (Scribe)
on Sep 12, 2013 at 12:01 UTC ( #1053701=perlquestion: print w/ replies, xml ) Need Help??
prashantktyagi has asked for the wisdom of the Perl Monks concerning the following question:

Hello Monks, I am newbie to XML Parsing.I am using XML::LibXML module to parse my XML. I want to read a XML (input.xml) and update the node in (output.xml).
here is my attempt--
my $parser = XML::LibXML->new(); $doc = $parser->parse_file("input.xml"); my $appName = $doc->findvalue(q|@name|);
So I have slurp whole file into $doc. Same way I have opened output.xml (complex one ) and did this way.
use XML::LibXML; my $parser = XML::LibXML->new(); my $doc = $parser->parse_file("output.xml"); my $query = "//anonotaion"; my($node) = $doc->findnodes($query); $node->setData('$appname'); print $doc->toString;
output.xml format is completely different from input.xml. I would like to know if there is any good way to achieve this.
fraction of xmls is --
__input.xml__
<appliance long_name ="my app name" revision="10.58.226.13"> <desciption_section> <annotation>template</annotation> <add_eula enabled="1"> <description>EULA LICENSE AGREEMENT</description> </add_eula> <welcome_screen enabled="1">welcome to my app </welcome_screen> </desciption_section> .....
__output.xml__
<?xml version="1.0" encoding="utf-8"?> <ovf:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xm +lns:vadk="http://www.vmware.com/schema/vadk" xmlns:ovf="http://schema +s.dmtf.org/ovf/envelope/1" xmlns:vssd="http://schemas.dmtf.org/wbem/w +scim/1/cim-schema/2/CIM_VirtualSystemSettingData" xmlns:rasd="http:// +schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSett +ingData" xmlns:vmw="http://www.vmware.com/schema/ovf" xmlns:vsm="http +://www.vmware.com/schema/vServiceManager" xsi:schemaLocation="http:// +schemas.dmtf.org/ovf/envelope/1 /opt/vmware/etc/build/schemas/vadk.xs +d" ovf:version="0.7.0" vadk:version="2.6.0.0"> <References> <File ovf:href="system.vmdk" ovf:id="system.vmdk_id"/> </References> <!-- The Annotation element of the AnnotationSection_Type is the te +xt that will be presented as the Description of the VM. --> <Section xsi:type="ovf:AnnotationSection_Type"> <Info/> <Annotation>new app</Annotation> </Section> <Section xsi:type="ovf:ProductSection_Type" ovf:required="false"> <Info>branding information</Info> <Product>OvMabk</Product> <Vendor></Vendor> ....

Comment on Reading and updating XML
Select or Download Code
Replies are listed 'Best First'.
Re: Reading and updating XML
by choroba (Canon) on Sep 12, 2013 at 12:12 UTC
    Your XML seems to use namespaces. You should study XML::LibXML::XPathContext to handle them in XPath queries.
    لսႽ ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://1053701]
Approved by hdb
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (12)
As of 2015-07-28 18:35 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (258 votes), past polls