Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Mac > Perl on OSX > XML - Attribute...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 1 of 5 Topic 972 of 1056
Post > Topic >>

XML - Attribute/Element names and XML::Simple module

by subs@[EMAIL PROTECTED] (Jim) Jun 12, 2007 at 06:50 PM

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi...

Here's hoping someone can come to the rescue on this issue for me.

I'm having a bear of a time figuring out why XML::Simple seems to  
want to make both the attribute and child element of a specific  
element into their own elements.  I'm starting to wonder if the XML  
supplied as input is illegally formatted?

As can be seen in my example here, the <platform_specific> element  
has an attribute named "attribute" and another named "platform".  It  
also has a child element named <platform>.  As can be seen in the  
example output, the attribute="something" is properly maintained as  
an atribute to <platform_specific>, while the platform="windows" is  
being forced into becoming a child element of <platform_specific>,  
resulting in two child <platform> elements with the same value.

I know that having an attribute and element of the same name and  
value is redundant, and I'm not certain if it is even legit XML (if  
not, someone let me know where I can find reference to this).   The  
input is not XML I control, so I'm looking at getting the provider to  
modify it before it comes to me if their XML is illegally formatted  
or some such.

My expectation is that XML::Simple would be keeping attributes where  
they started, and the contents of elements where they started.

I started also trying to use XML::Smart today, and got exactly the  
same behaviour, so I'm wondering if the issue is not with the perl  
modules, but possibly with one of their dependencies (they both  
depend upon XML::Parser and xpat right?).

My current script is attempting to simply read in the source xml  
file, and write out a new copy with the same xml.  My ultimate goal  
is, of course, to be able to modify items within this config file,  
but I need to figure out this attribute name versus element name  
issue first.

Any help anyone can provide would be GREATLY appreciated.

Thanks in advance, examples are below.

- - jim -



- -- my input XML file looks like this --

<?xml version="1.0" encoding="utf-8" ?>
<config>
	<platform_specific attribute="something" platform="Windows">
		<platform>Windows</platform>
	</platform_specific>
</config>

- -- my output XML looks like this --

<?xml version="1.0" encoding="utf-8" ?>
<config>
   <platform_specific attribute="something">
     <platform>Windows</platform>
     <platform>Windows</platform>
   </platform_specific>
</config>

- -- the basics of my perl script look like this--

	use XML::Simple ;# qw(:strict);				# use module
	$xml = new XML::Simple;					# create object
	$data = $xml->XMLin($configFile,
							KeepRoot 		=> 1,
							ForceArray		=> 'config',
						); # read xml file
							
	use Data::Dumper;		# Using data dumper here is mostly useful for seeing
	print Dumper($data);		# 	the xml struct we've read in while  
developing this
							
	$output = XMLout($data,
						XMLDecl 	=> '<?xml version="1.0" encoding="utf-8" ?>',
						NoSort 		=> 0,
						KeepRoot 	=> 1,
					);







- -- the $data object ends up looking like this --

$VAR1 = {
           'config' => [
                         {
                           'platform_specific' => [
                                                    {
                                                      'attribute' =>  
'something',
                                                      'platform' => [
                                                                       
'Windows',
                                                                       
'Windows',
                                                                       
'Windows'
                                                                    ]
                                                    }
                                                  ]
                         }
                       ]
         };




- --------------------------------------------------------------------
JIm | subs@[EMAIL PROTECTED]
 177B 8352 2D6B 1E10  DAE5 7865 34D5 3139 5D2D


-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Darwin)

iD8DBQFGb01O+LYMpAC2iPgRAj43AJ4r0yZQcyB7DP4YLi4mDLJeVMhMxQCfS1DA
Oa6fZNdAaAAIy1Dfngq0vf0=
=9lo5
-----END PGP SIGNATURE-----
 




 5 Posts in Topic:
XML - Attribute/Element names and XML::Simple module
subs@[EMAIL PROTECTED] (  2007-06-12 18:50:06 
Re: XML - Attribute/Element names and XML::Simple module
bob.faist@[EMAIL PROTECTE  2007-06-12 22:48:30 
Re: XML - Attribute/Element names and XML::Simple module
subs@[EMAIL PROTECTED] (  2007-06-13 17:32:51 
Re: XML - Attribute/Element names and XML::Simple module
ken@[EMAIL PROTECTED] (K  2007-06-13 20:58:55 
Re: XML - Attribute/Element names and XML::Simple module
bob.faist@[EMAIL PROTECTE  2007-06-13 21:46:01 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Sun Jul 6 9:43:36 CDT 2008.