Sponsored Content
Full Discussion: Help with parsing xml file
Top Forums Shell Programming and Scripting Help with parsing xml file Post 302961854 by Don Cragun on Friday 4th of December 2015 11:05:18 PM
Old 12-05-2015
You have asked for our help fourteen times. What have you tried to solve this problem?

An XML file usually has matching open and close tags. The sample input you have provided has one opening iwgroups tag and no matching closing tag. The sample input you have provided has two opening iwgroup tags, but only one closing tag. It would seem that the closing iwgroup tag would be the trigger that should terminate processing of an XML input segment and produce an output line in your desired CSV file. How can we be expected to suggest code if you can't give us consistent sample input and output?

A CSV file (with comma as the character separating values) doesn't usually have LOTS of leading and/or trailing spaces in the data. Why are there dozens of seemingly extraneous spaces in your desired sample output?

A quoted field in an XML file usually specifies that the data between the quotes should be the contents of the output field you want in your CSV file. The first description field in your XML file is:
Code:
description="group for RX approval "

(note the trailing <space> after approval), but the output you say you want for that field is:
Code:
        group for RX approval

(note the eight leading <space> characters that are not present in the XML file and the missing trailing space after approval).

If you want our help on this you need to very clearly describe the output format you are trying to produce; not just show us a desired CSV file that does not seem to match the sample XML file you have provided.

Please help us help you!
 

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

Parsing xml file using Sed

Hi All, I have this(.xml) file as: <!-- define your instance here --> <instance name='ins_C2Londondev' user='' group='' fullname='B2%20-%20London%20(dev)' > <property> </property> </instance> I want output as: <!-- define your instance here --> <instance... (3 Replies)
Discussion started by: kapilkinha
3 Replies

2. Shell Programming and Scripting

XML file parsing using script

Hi I need some help with XML file parsing. I have an XML file with the below tag, I need a script to identify the value of srvcName which is this case is "AAA srvc name". I need to put contents of this value which is AAA srvc and name into different variables using an array and then reformat it... (6 Replies)
Discussion started by: zmfcat1
6 Replies

3. UNIX for Dummies Questions & Answers

Help parsing a XML file ....

Well I have read several threads on the subject ... but being a newbie like me makes it hard to understand ... What I need is the following: Input data: ------- snip --------- <FavouriteLocations> <FavouriteLocations class="FavouriteList"><Item... (6 Replies)
Discussion started by: misak
6 Replies

4. Shell Programming and Scripting

Parsing xml file

hi guys, great help to the original question, can i expand please? i have large files filled with blocks like this <Placemark> network type: hot line1 line2 line3 <styleUrl>red.png</styleUrl> </Placemark> <Placemark> network type: cold line1 line2 line3... (3 Replies)
Discussion started by: garvald
3 Replies

5. Shell Programming and Scripting

Help in parsing xml file (sed/nawk)

I have a large xml file as shown below: <input> <blah> <blah> <atr="blah blah value = ""> <blah> <blah> </input> ..2nd chunk... ..3rd chunk... ...4th chunk... All lines between <input> and </input> is one 'order' and this 'order' is repeated... (14 Replies)
Discussion started by: shekhar2010us
14 Replies

6. Shell Programming and Scripting

parsing xml file

Hello! We need to parse weblogic config.xml file and display rows in format: machine:listen-port:name:application_name In our enviroment the output should be (one line for every instance): Crm-Test-Web:8001:PIA:peoplesoft Crm-Test-Web:8011:PIA:peoplesoft... (9 Replies)
Discussion started by: annar
9 Replies

7. Shell Programming and Scripting

Parsing an XML file

Hello, I have the following xml file as an input. <?xml version="1.0" encoding="UTF-8"?> <RECORDS PS3_VERSION="1104_01"><RECORD> <POI_ID>931</POI_ID> <SUPPLIER_ID>2</SUPPLIER_ID> <POI_PVID>997920846</POI_PVID> <DB_ID>1366650925</DB_ID> <REGION>H1</REGION> <POI_NAME NAME_TYPE="Official"... (4 Replies)
Discussion started by: ramky79
4 Replies

8. Shell Programming and Scripting

Help in parsing XML output file in perl.

Hi I have an XML output like : <?xml version="1.0" encoding="ISO-8859-1" ?> - <envelope> - <body> - <outputGetUsageSummary> - <usgSumm rerateDone="5"> - <usageAccum accumId="269" accumCaptn="VD_DP_AR" inclUnits="9999999.00" inclUnitsUsed="0.00" shared="false" pooled="false"... (7 Replies)
Discussion started by: rkrish
7 Replies

9. 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

10. UNIX for Dummies Questions & Answers

Parsing XML file

I want to parse xml file sample file....... <name locale="en">my_name<>/name><lastChanged>somedate</lastChanged><some more code here> <name locale="en">tablename1<>/name><lastChanged>somedate</lastChanged> <definition><dbquery><sources><sql type="cognos">select * from... (10 Replies)
Discussion started by: ms2001
10 Replies
CSV(3pm)						User Contributed Perl Documentation						  CSV(3pm)

NAME
XML::CSV - Perl extension converting CSV files to XML SYNOPSIS
use XML::CSV; $csv_obj = XML::CSV->new(); $csv_obj = XML::CSV->new(\%attr); $status = $csv_obj->parse_doc(file_name); $status = $csv_obj->parse_doc(file_name, \%attr); $csv_obj->declare_xml(\%attr); $csv_obj->declare_doctype(\%attr); $csv_obj->print_xml(file_name, \%attr); DESCRIPTION
XML::CSV is a new module in is going to be upgraded very often as my time permits. For the time being it uses CSV_XS module object default values to parse the (*.csv) document and then creates a perl data structure with xml tags names and data. At this point it does not allow for a write as you parse interface but is the first upgrade for the next release. I will also allow more access to the data structures and more documentation. I will also put in more support for XML, since currently it only allows a simple XML structure. Currently you can modify the tag structure to allow for attributes. No DTD support is currently available, but will be implemented in a soon coming release. As the module will provide both: object and event interfaces, it will be used upon individual needs, system resources, and required performance. Ofcourse the DOM implementation takes up more resources and in some instances timing, it's the easiest to use. ATTRIBUTES new() error_out - Turn on the error handling which will die on all errors and assign the error message to $XML::CSV::csvxml_error. column_headings - Specifies the column heading to use. Passed as an array reference. Can be used as a supplement to using the first column in the file as the XML tag names. Since XML::CSV does not require you to parse the CSV file, you can provide your own data structure to parse. column_data - Specifies the CSV data in a two dimensional array. Passed as an array reference. csv_xs - Specifies the CSV_XS object to use. This is used to create custom CSV_XS object and override the default one created by XML::CSV. ATTRIBUTES parse_doc() headings - Specifies the number of rows to use as tag names. Defaults to 0. Ex. {headings => 1} (This will use the first row of data as xml tags) sub_char - Specifies the character with which the illegal tag characters will be replaced with. Defaults to undef meaning no substitution is done. To eliminate characters use "" (empty string) or to replace with another see below. Ex. {sub_char => "_"} or {sub_char => ""} ATTRIBUTES declare_xml() version - Specifies the xml version. Ex. {version => '1.0'} encoding - Specifies the type of encoding. XML standard defaults encoding to 'UTF-8' if notspecifically set. Ex. {encoding => 'ISO-8859_1'} standalone - Specifies the the document as standalone (yes|no). If the document is does not rely on an external DTD, DTD is internal, or the external DTD does not effect the contents of the document, the standalone attribute should be set to 'yes', otherwise 'no' should be used. For more info see XML declaration documentation. Ex. {standalone => 'yes'} ATTRIBUTES declare_doctype() source - Specifies the source of the DTD (SYSTEM|PUBLIC) Ex. {source => 'SYSTEM'} location1 - URI to the DTD file. Public ID may be used if source is PUBLIC. Ex. {location1 => 'http://www.xmlproj.com/dtd/index_dtd.dtd'} or {location1 => '-//Netscape Communications//DTD RSS 0.90//EN'} location2 - Optional second URI. Usually used if the location1 public ID is not found by the validating parser. Ex. {location2 => 'http://www.xmlproj.com/file.dtd'} subset - Any other information that proceedes the DTD declaration. Usually includes internal DTD if any. Ex. {subset => 'ELEMENT first_name (#PCDATA)> <!ELEMENT last_name (#PCDATA)>'} You can even enterpolate the string with $obj->{column_headings} to dynamically build the DTD. Ex. {subset => "ELEMENT $obj->{columnt_headings}[0] (#PCDATA)>"} ATTRIBUTES print_xml() file_tag - Specifies the file parent tag. Defaults to "records". Ex. {file_tag => "file_data"} (Do not use < and > when specifying) parent_tag - Specifies the record parent tag. Defaults to "record". Ex. {parent_tag => "record_data"} (Do not use < and > when specifying) format - Specifies the character to use to indent nodes. Defaults to " " (tab). Ex. {format => " "} or {format => " "} PUBLIC VARIABLES
$csv_obj->{column_headings} $csv_obj->{column_data} EXAMPLES
Example #1: This is a simple implementation which uses defaults use XML::CSV; $csv_obj = XML::CSV->new(); $csv_obj->parse_doc("in_file.csv", {headings => 1}); $csv_obj->print_xml("out.xml"); Example #2: This example uses a passed headings array reference which is used along with the parsed data. use XML::CSV; $csv_obj = XML::CSV->new(); $csv_obj->{column_headings} = @arr_of_headings; $csv_obj->parse_doc("in_file.csv"); $csv_obj->print_xml("out.xml", {format => " ", file_tag = "xml_file", parent_tag => "record"}); Example #3: First it passes a reference to a array with column headings and then a reference to two dimensional array of data where the first index represents the row number and the second column number. We also pass a custom Text::CSV_XS object to overwrite the default object. This is usefull for creating your own CSV_XS object's args before using the parse_doc() method. See 'perldoc Text::CSV_XS' for different new() attributes. use XML::CSV; $default_obj_xs = Text::CSV_XS->new({quote_char => '"'}); $csv_obj = XML::CSV->new({csv_xs => $default_obj_xs}); $csv_obj->{column_headings} = @arr_of_headings; $csv_obj->{column_data} = @arr_of_data; $csv_obj->print_xml("out.xml"); AUTHOR
Ilya Sterin, isterin@mail.com SEE ALSO
Text::CSV_XS perl v5.10.0 2001-05-28 CSV(3pm)
All times are GMT -4. The time now is 12:05 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy