Sponsored Content
Full Discussion: Script to group XML entries?
Top Forums Shell Programming and Scripting Script to group XML entries? Post 302769736 by dlundwall on Wednesday 13th of February 2013 08:37:51 AM
Old 02-13-2013
Script to group XML entries?

Hello all, If I wanted to take an xml file as INPUT to a script to pull information from it how do you group things together? Here is what I am trying to do:

In the xml file you have:

<Group version="1.0">
<ID>85330</ID>
<DeviceIDList rootURL="devices" relatesURL="relatesto/devices">
<ID>85847</ID>
<ID>85211</ID>
<ID>21051</ID>
</DeviceIDList>
<Item version="1.0">
<Name>Citrix NetScaler Devices</Name>
</Item>
</Group>

This is a small sample of just one <Group>... out of 100's. I am looking to look at every group and get output like this:

Group ID: 85330
DeviceID List
85847
85211
21051
Group Name: Citrix NetScaler Devices ...

And, is there a way to parse from another XML file the DeviceIDList and append the output of the above output so that the final output looks like this:

Group ID: 85330
DeviceID List
85847 - losa-5-bldg1
85211 - losa-9-blg04
21051 - rtf-core-5
Group Name: Citrix NetScaler Devices

Last edited by dlundwall; 02-13-2013 at 09:44 AM.. Reason: Added info
 

9 More Discussions You Might Find Interesting

1. Solaris

entry in /etc/group too long - problem using sudo with %group

hi folks, I've been googling for quite some time, but still can't find anything near it...my problem is the following: for useradministration in our company we are using ssh/sudo, now whenever I try to add users (we have quite a number of users) with useradd -G groupname for secondary group I... (4 Replies)
Discussion started by: poli
4 Replies

2. Shell Programming and Scripting

How to remove xml namespace from xml file using shell script?

I have an xml file: <AutoData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Table1> <Data1 10 </Data1> <Data2 20 </Data2> <Data3 40 </Data3> <Table1> </AutoData> and I have to remove the portion xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" only. I tried using sed... (10 Replies)
Discussion started by: Gary1978
10 Replies

3. Shell Programming and Scripting

Merge group numbers and add a column containing group names

I have a file in the following format. Groups of data merge together and the group number is indicated above each group. 1 adrf dfgr dfg 2 dfgr dfgr 3 dfef dfr fd 4 fgrt fgr fgg 5 fgrt fgr (3 Replies)
Discussion started by: Lucky Ali
3 Replies

4. Shell Programming and Scripting

Merge group numbers and add a column containing group names

Hi All I do have a file like this with 6 columns. Groups of data merge together and the group number is indicated above each group. 1 1 12 26 289 3.2e-027 GCGTATGGCGGC 2 12 26 215 6.7e+006 TTCCACCTTTTG 3 9 26 175 ... (1 Reply)
Discussion started by: Lucky Ali
1 Replies

5. Shell Programming and Scripting

Sort the file contents in each group....print the group title as well

I've this file and need to sort the data in each group File would look like this ... cat file1.txt Reason : ABC 12345-0023 32123-5400 32442-5333 Reason : DEF 42523-3453 23345-3311 Reason : HIJ 454553-0001 I would like to sort each group on the last 4 fileds and print them... (11 Replies)
Discussion started by: prash184u
11 Replies

6. AIX

Adding a Volume Group to an HACMP Resource Group?

Hi, I have a 2 node Cluster. Which is working in active/passive mode (i.e Node#1 is running and when it goes down the Node#2 takes over) Now there's this requirement that we need a mount point say /test that should be available in active node #1 and when node #1 goes down and node#2 takes... (6 Replies)
Discussion started by: aixromeo
6 Replies

7. Shell Programming and Scripting

need a one liner to grep a group info from /etc/group and use that result to search passwd file

/etc/group tiadm::345:mk789,po312,jo343,ju454,ko453,yx879,iy345,hn453 bin::2:root,daemon sys::3:root,bin,adm adm::4:root,daemon uucp::5:root /etc/passwd mk789:x:234:1::/export/home/dummy:/bin/sh po312:x:234:1::/export/home/dummy:/bin/sh ju454:x:234:1::/export/home/dummy:/bin/sh... (6 Replies)
Discussion started by: chidori
6 Replies

8. Shell Programming and Scripting

Shell script - group by

Hi, I have text file as shown below. root 25 oracle 25 batch 30 griduser 32 admin 35 root 25 oracle 25 batch 30 griduser 32 oracle 25 batch 30 griduser 32 xuser 45 admin 35 I want to group by based on user name, and the output need to be as below. Not necessary the username to be... (10 Replies)
Discussion started by: baladelaware73
10 Replies

9. Programming

Sql ORA-00937: not a single-group group function

I'm trying to return only one row with the highest value for PCT_MAX_USED. Any suggestions? When I add this code, I get the ORA-00937 error. trunc(max(decode( kbytes_max, 0, 0, (kbytes_alloc/kbytes_max)*100))) pct_max_used This is the original and returns all rows. select (select... (3 Replies)
Discussion started by: progkcp
3 Replies
XML::Smart::Tutorial(3pm)				User Contributed Perl Documentation				 XML::Smart::Tutorial(3pm)

NAME
XML::Smart::Tutorial - Tutorial and examples for XML::Smart. SYNOPSIS
This document is a tutorial for XML::Smart and shows some examples of usual things. Working with contents: In XML::Smart the key CONTENT is reserved and shouldn't be used directly, since XML::Smart will deal with the convertion of arguments to node contents, including multiple node contents autimatically. What happens when you set a value: $xml->{root}{foo} = 'simple value' ; Here foo will be a normal argument/attribute value, and will generate this XML data: <root foo="simple value"/> But if you insert some tag or lines in the values by default XML::Smart will convert it to a node content: $xml->{root}{foo} = "line0 lien1 line2 " ; And will generate that XML data: <root> <foo>line0 lien1 line2 </foo> </root> But what you can do if you want to force some type, let's say, have a node content with a simple value: $xml->{root}{foo} = 'simple value' ; $xml->{root}{foo}->set_node(1) ; And will generate that XML data: <root> <foo>simple value</foo> </root> Multiple contents: When you have interpolated content/data you need to work in a different. Let's say that you load this XML data: <root> content0 <tag1 arg="1"/> content1 </root> If you access directly the root key as string you will get all the content parts grouped. So, this code: my $xml = new XML::Smart(q` <root> content0 <tag1 arg="1"/> content1 </root> `,'smart') ; print "#$xml->{root}#" ; Will print that: # content0 content1 # To access each part of the content independently you should use an array that receive the method content(): my @content = $xml->{root}->content ; print "#$content[0]# " ; And this will print that: # content0 # Now to set the multiple content values you should use the method content() with 2 arguments: $xml->{root}->content(0,'new content') ; And now the XML data produced will be: <root>new content<tag1 arg="1"/> content1 </root> If you use the method content() with only one argument it will remove all the multiple contents and will set the new value in the place of the 1st content. Setting the XML Parser. By defaul XML::Smart will use XML::Parser or XML::Smart::Parser (in this order of preference) to load a XML data. To force or define by your self the parser you can use the 2nd argument option when creating a XML::Smart object: my $xml = new XML::Smart( 'some.xml' , 'XML::Parser' ) ; ## and my $xml = new XML::Smart( 'some.xml' , 'XML::Smart::Parser' ) ; XML::Smart also has an extra parser, XML::Smart::HTMLParser, that can be used to load HTML as XML, or to load wild XML data: my $xml = new XML::Smart( 'some.xml' , 'XML::Smart::HTMLParser' ) ; Aliases for the parser options: SMART|REGEXP => XML::Smart::Parser HTML => XML::Smart::HTMLParser So, you can use as: my $xml = new XML::Smart( 'some.xml' , 'smart' ) ; my $xml = new XML::Smart( 'some.xml' , 'html' ) ; Customizing the Parser. You can customize the way that the parser will treat the XML data: Forcing nodes/tags and arguments/attributes to lowercase or upercase: ## For lower case: my $xml = new XML::Smart( 'some.xml' , lowtag => 1 , lowarg => 1 , ) ; ## For uper case: my $xml = new XML::Smart( 'some.xml' , upertag => 1 , uperarg => 1 , ) ; Loading arguments without values (flags) as a TRUE boolean: ** Note, this option will work only when the XML is parsed by XML::Smart::HTMLParser, since only it accept arguments without values! my $xml = new XML::Smart( '<root><foo arg1="" flag></root>' , 'XML::Smart::HTMLParser' , arg_single => 1 , ) ; Here's the tree of the example above: 'root' => { 'foo' => { 'flag' => 1, 'arg1' => '' }, }, Customizing the parse events: XML::Smart can redirect the parsing process to personalized functions: my $xml = XML::Smart->new( 'some.xml' , on_start => &on_start , on_char => &on_char , on_end => &on_end , ) ; sub on_start { my ( $tag , $pointer , $pointer_back ) = @_ ; $pointer->{$tag}{type_user} = 1 if $tag =~ /(?:name|age)/ ; } sub on_char { my ( $tag , $pointer , $pointer_back , $content) = @_ ; $$content =~ s/s+/ /gs ; } sub on_end { my ( $tag , $pointer , $pointer_back ) = @_ ; $pointer->{$tag}{type_extra} = 1 if $tag =~ /(?:more|tel|address)/ ; } AUTHOR
Graciliano M. P. <gm@virtuasites.com.br> I will appreciate any type of feedback (include your opinions and/or suggestions). ;-P Enjoy and thanks for who are enjoying this tool and have sent e-mails! ;-P ePod This document was written in ePod (easy-POD), than converted to POD, and from here you know the way. perl v5.10.1 2004-12-08 XML::Smart::Tutorial(3pm)
All times are GMT -4. The time now is 10:15 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy