XML parsing by UNIX


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users XML parsing by UNIX
# 8  
Old 03-23-2013
An awk solution:
Code:
printf "Enter TNS name: "
read tnsname

awk -F'[<>]' -v T="$tnsname" '
                $0 ~ T && $0 ~ /tns:name/ {
                                f = 1
                }
                f && $0 ~ /tns:value/ {
                                print "TNS Value: " $3
                                exit 1
                }
' xml

Output:
Code:
$ ./guha
Enter TNS name: AdminInQueue
TNS Value: WBIA.SMRPSC1.ADINQ

This User Gave Thanks to Yoda For This Post:
# 9  
Old 03-24-2013
Many Many thanks.
it works now. Now i want to use that value for replacing a <tns:value> having same <tns:name> but in the different file,contains same tns:name but different tns:value.
[i saved the tns:value into a variable but couldn't replace the other <tns:value> for different xml file. Both files have same <tns:name> but different values. i want to make both files same.]
can u pls help me on this.
# 10  
Old 03-25-2013
Is the name alone enough to key the value within this xml schema?
# 11  
Old 03-26-2013
PFA 2 attachments. Suppose one file is source and another one ur target xml. Both have same <tns:name> but different <tns:value>s. i want to change all <tns:value>s of target file to source file's <tns:value>s only.

no.<tns:name> not the only single key. i want to replace the <tns:value>s using source file only.that's it.

i want to know the command how can i change the <tns:value> of my target xml by using source xml.
# 12  
Old 03-26-2013
You can crudely parse the source file finding name and value pairs and put them in a bash or awk associative array (hash map) as a resource when processing the second file, replacing all values where the name looks up in the array.
# 13  
Old 03-26-2013
You could code something like this:
Code:
awk '
BEGIN {
                F = "source.xml"
                while ((getline line < F) > 0)
                {
                        if ( line ~ /tns:name/ )
                        {
                                R = line
                                gsub(/[ \t]*<tns:name>|<\/tns:name>[ \t]*/, X, R)
                                f = 1
                        }
                        if ( line ~ /tns:value/ && f )
                        {
                                gsub(/[ \t]*<tns:value.*\">|<\/tns:value>[ \t]*/, X,  line)
                                T_V[R] = line
                                f = 0
                        }
                }
                close(F)
                F = "target.xml"
                while ((getline line < F) > 0)
                {
                        if ( line ~ /tns:name/ )
                        {
                                R = line
                                gsub(/[ \t]*<tns:name>|<\/tns:name>[ \t]*/, X, R)
                                f = 1
                        }
                        if ( line ~ /tns:value/ && f )
                        {
                                V = line
                                gsub(/[ \t]*<tns:value.*\">|<\/tns:value>[ \t]*/, X, V)
                                if ( R in T_V )
                                {
                                        if ( V != T_V[R] )
                                                gsub(V, T_V[R], line)
                                }
                        }
                        print line
                }
                close(F)
} ' /dev/null

This User Gave Thanks to Yoda For This Post:
# 14  
Old 03-27-2013
Looks good, show us some inputs and output!
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

Unix XML Parsing check well formed

Hi, I am using ksh, is there any command which can check whether the XML file is well formed or not? Regards, Sreejit (1 Reply)
Discussion started by: sreejitnair123
1 Replies

9. Shell Programming and Scripting

XML Parsing

Hi, Need a script to parse the following xml file content <tag1 Name="val1"> <abc Name="key"/> <abc Name="pass">*********</abc> </tag1> <tag2 Name="Core"> <Host Name="a.b.c"> <tag1 Name="abc"> <abc Name="ac">None</abc> ... (4 Replies)
Discussion started by: Mavericc
4 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