Painless XML parsing


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Painless XML parsing
# 1  
Old 08-24-2006
Question Painless XML parsing

Hi: I've just joined the forum so forgive me if I'm posting this in the wrong place.

I'm looking for a (relatively) painless way to get some data from a XML file (my browser history in this case), and write the output to a plain text file. So, for example, if the relevant section of XML looked like this:

<item>
<name>Google</name>
<url>http://www.google.com</url>
</item>

Then the output would look like this (in a plain text file):

"Google
http://www.google.com"

I ought to say that the XML files I'm going to be working with have more than one entry (or item, as I've called it in my example), so I need to be able to work with that and fetch the details of each item, then write these details to a separate text file for each item. As is hopefully clear, I'm trying to separate the XML down into something a little simpler.

I have very little experience programming in unix, so I'm really looking for a pretty ready-made solution, or some step-by-step advice if someone has the time or inclination to give it! As it stands this is very much a work in progress, and I'm still looking into different ways of achieving my goal. Any help/advice would be appreciated! Cheers.
# 2  
Old 08-25-2006
Using newLisp:
Code:
(set 'str (read-file (last (main-args))))
(xml-type-tags nil nil nil nil)
(set 'xml-list (first (xml-parse str (+ 1 2 4))))
(dolist (stuff xml-list)
  (and (= "item" (first stuff))
    (println (lookup "name" stuff))
    (println (lookup "url" stuff))))
(exit)

This input
Code:
<?xml version="1.0" ?>
<DATABASE name="example.xml">
<item>
<name>Google</name>
<url>http://www.google.com</url>
</item>
<item>
<name>Fling</name>
<url>http://www.fling.com</url>
</item>
</DATABASE>

results in this output:
Code:
Google
http://www.google.com
Fling
http://www.fling.com

Invoke the program in this way:
Code:
newlisp xml.lsp log.xml

# 3  
Old 08-25-2006
For your input here is a sed solution. The sed one-liner might look nasty.

Code:
[/tmp]$ echo "<item>
<name>Google</name>
<url>http://www.google.com</url>
</item>" | sed -n -e "s_<[^>]*>\([^<>]*\)<[^>]*>_\1_p"
Google
http://www.google.com
[/tmp]$

# 4  
Old 08-25-2006
Another way...
Code:
awk -F '[<>]' '$2=="item",$2=="/item"{if($2~/^(name|url)$/)print $3}' log.xml

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

XML parsing

I have an xml file where the format looks like below <SESSIONCOMPONENT REFOBJECTNAME ="pre_session_command" REUSABLE ="NO" TYPE ="Pre-session command"> <TASK DESCRIPTION ="" NAME ="pre_session_command" REUSABLE ="NO" TYPE ="Command" VERSIONNUMBER ="1"> ... (8 Replies)
Discussion started by: r_t_1601
8 Replies

2. Shell Programming and Scripting

XML Parsing :

HI I want to parse below file in to two output :- Input :- ?xml version="1.0" encoding="UTF-8"?> <bulkCmConfigDataFile xmlns:un="utranNrm.xsd" <configData dnPrefix="Undefined"> <xn:SubNetwork id="ONRM_ROOT_MO_R"> <xn:MeContext id="C136"> ... (3 Replies)
Discussion started by: asavaliya
3 Replies

3. Shell Programming and Scripting

XML parsing

i have xml output in below format... <AlertsResponse> <Alert id="11216" name="fgdfg"> <AlertActionLog timestamp="1356521629778" user="admin" detail="Recovery Alert"/> </Alert> <Alert id="11215" name="gdfg <AlertActionLog timestamp="1356430119840" user=""... (12 Replies)
Discussion started by: vivek d r
12 Replies

4. Shell Programming and Scripting

XML: parsing of the Google contacts XML file

I am trying to parse the XML Google contact file using tools like xmllint and I even dived into the XSL Style Sheets using xsltproc but I get nowhere. I can not supply any sample file as it contains private data but you can download your own contacts using this script: #!/bin/sh # imports... (9 Replies)
Discussion started by: ripat
9 Replies

5. Shell Programming and Scripting

Parsing XML

I am trying to parse an xml file and trying to grab certain values and inserting them into database table. I have the following xml that I am parsing: <dd:service name="locator" link="false"> <dd:activation mode="manual" /> <dd:run mode="direct_persistent" proxified="false" managed="true"... (7 Replies)
Discussion started by: $criptKid617
7 Replies

6. UNIX for Advanced & Expert Users

XML Parsing

I had a big XML and from which I have to make a layout as below *TOTAL+CB | *CB+FX | CS |*IR | *TOTAL | -------------------------------------------------------------------------------------------------- |CB FX | | | | DMFXNY EMSGFX... (6 Replies)
Discussion started by: manas_ranjan
6 Replies

7. Shell Programming and Scripting

Parsing XML

Learned People, Hello ! Till today, for the most part, all of the tricky questions/situations that I encountered were already posted by other folks and all I had to do was peruse through these one at a time and I could find some sort of an answer and all I had to do was add some minor tweaks... (5 Replies)
Discussion started by: ManoharMa
5 Replies

8. Shell Programming and Scripting

XML parsing

I have a xml file attached. I need to parse parameterId and its value My output should be like 151515 38 151522 32769 and so on.. Please help me. Its urgent (6 Replies)
Discussion started by: LavanyaP
6 Replies

9. Shell Programming and Scripting

parsing xml

I want to use wget comment to parse an xml parse that exist in an online website. How can I connect it using shell script through Unix and how can I parse it?? (1 Reply)
Discussion started by: walnut
1 Replies

10. Programming

XML parsing

Hi I want to take an XML file and transform it into a pipe-delimited format. What is the best tool to use for this? I have libxml2 which seems to be the best xml parser around. The xml file will have the following format. <Txn> <Date>120504</Date> <id>99</id> <Items> <Item>... (1 Reply)
Discussion started by: handak9
1 Replies
Login or Register to Ask a Question