Extract the specific tags in a XML file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Extract the specific tags in a XML file
# 15  
Old 10-20-2017
Hi, try:

Code:
awk '
  $1~/jdbc-data-source / {
    split($1,F,/"/)
    name=F[2]
  } 
  {
    P[$1]=$2
  }
  END {
    print name, P["url"], P["driver-name"], P["value"], P["password-encrypted"], P["jndi-name"]
  } 
' RS=\< FS=\> OFS='\n' file

Output:
Code:
http://xmlns.oracle.com/weblogic/jdbc-data-source
jdbc:oracle:thin:@10.137.181.188:1521/soa12cdb
oracle.jdbc.xa.client.OracleXADataSource
DEV_SOAINFRA
{AES}xxxxx/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
jdbc/SOADBDataSource



--
On Solaris use /usr/xpg4/bin/awk

Last edited by Scrutinizer; 10-20-2017 at 03:39 AM..
This User Gave Thanks to Scrutinizer For This Post:
# 16  
Old 10-20-2017
PLease consider the input file as below
HTML Code:
<?xml version='1.0' encoding='UTF-8'?>
<jdbc-data-source xmlns="http://xmlns.oracle.com/weblogic/jdbc-data-source" xmlns:sec="http://xmlns.oracle.com/weblogic/security" xmlns:wls="http://xmlns.oracle.com/weblogic/security/wls" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/weblogic/jdbc-data-source http://xmlns.oracle.com/weblogic/jdbc-data-source/1.2/jdbc-data-source.xsd">
  <name>DataSourceTest</name>
  <jdbc-driver-params>
    <url>jdbc:oracle:thin:@10.137.181.188:1521/soa12cdb</url>
    <driver-name>oracle.jdbc.xa.client.OracleXADataSource</driver-name>
    <properties>
      <property>
        <name>user</name>
        <value>DEV_SOAINFRA</value>
      </property>
    </properties>
    <password-encrypted>{AES}xxxxx/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=</password-encrypted>
  </jdbc-driver-params>
  <jdbc-connection-pool-params>
    <initial-capacity>0</initial-capacity>
    <test-table-name>SQL SELECT 1 FROM DUAL</test-table-name>
  </jdbc-connection-pool-params>
  <jdbc-data-source-params>
    <jndi-name>jdbc/SOADBDataSource</jndi-name>
  </jdbc-data-source-params>
</jdbc-data-source>
And the expected output for the above input file should be
Code:
Param1:-DataSourceTest <which is nothing but the value of <name>>
Param2:-jdbc:oracle:thin:@10.137.181.188:1521/soa12cdb<which is nothing but the value of <url>>
Param3:-oracle.jdbc.xa.client.OracleXADataSource<which is nothing but the value of <driver-name>>
Param4:-DEV_SOAINFRA<which is nothing but the value of <value>>
Param5:-{AES}xxxxx/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=<which is nothing but the value of <password-encrypted>>
Param6:-jdbc/SOADBDataSource<which is nothing but the value of <jndi-name>>

Thanks,
Siva

Last edited by Scrutinizer; 10-20-2017 at 03:38 AM..
# 17  
Old 10-20-2017
Hi,

Can you not use Perl for this? It has modules specifically written for this purpose.
# 18  
Old 10-20-2017
Hello Siv51427882,

Could you please try following and let me know if this helps you.
Code:
awk -F"[><]" '/jdbc-data-source/{a=1} a && /<name>.*<\/name>/{print "Param1:-"$3;a="";next} /<url>.*<\/url?/{print "Param2:-"$3;next} /<driver-name>.*<\/driver-name>/{print "Param3:-"$3;next} /<value>.*<\/value>/{print "Prarm4:-"$3;next} /<password-encrypted>.*<\/password-encrypted>/{print "Param5:-"$3;next} /<jndi-name>.*<\/jndi-name>/{print "Param5:-"$3}'  Input_file

Output will be as follows.
Code:
Param1:-DataSourceTest
Param2:-jdbc:oracle:thin:@10.137.181.188:1521/soa12cdb
Param3:-oracle.jdbc.xa.client.OracleXADataSource
Prarm4:-DEV_SOAINFRA
Param5:-{AES}xxxxx/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
Param5:-jdbc/SOADBDataSource

EDIT: Adding a non-one liner form of solution too now.
Code:
awk -F"[><]" '
/jdbc-data-source/{
  a=1
}
a && /<name>.*<\/name>/{
  print "Param1:-"$3;
  a=""
  next
}
/<url>.*<\/url?/{
  print "Param2:-"$3;
  next
}
/<driver-name>.*<\/driver-name>/{
  print "Param3:-"$3
  next
}
/<value>.*<\/value>/{
  print "Prarm4:-"$3
  next
}
/<password-encrypted>.*<\/password-encrypted>/{
  print "Param5:-"$3
  next
}
/<jndi-name>.*<\/jndi-name>/{
  print "Param5:-"$3
  next
}
'   Input_file

Thanks,
R. Singh

Last edited by Scrutinizer; 10-20-2017 at 03:38 AM..
This User Gave Thanks to RavinderSingh13 For This Post:
# 19  
Old 10-20-2017
Quote:
Originally Posted by Siv51427882
PLease consider the input file as below
[..]

And the expected output for the above input file should be
Code:
Param1:-DataSourceTest <which is nothing but the value of <name>>
Param2:-jdbc:oracle:thin:@10.137.181.188:1521/soa12cdb<which is nothing but the value of <url>>
Param3:-oracle.jdbc.xa.client.OracleXADataSource<which is nothing but the value of <driver-name>>
Param4:-DEV_SOAINFRA<which is nothing but the value of <value>>
Param5:-{AES}xxxxx/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=<which is nothing but the value of <password-encrypted>>
Param6:-jdbc/SOADBDataSource<which is nothing but the value of <jndi-name>>

Thanks,
Siva
With the example of post#15, do you think you can manage to modify it so that it prints param<n>: before each value?
# 20  
Old 10-20-2017
Hello R.Singh,

That worked..!!!
Thanks a lot.
And sorry for confusion around.

Thanks
Siva
# 21  
Old 10-20-2017
Quote:
Originally Posted by RavinderSingh13
Hello Siv51427882,

Could you please try following and let me know if this helps you.
...
Why don't you just post the "non-one liner" to start with?
This User Gave Thanks to Scott For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

How to pull multiple XML tags from the same XML file in Shell.?

I'm searching for the names of a TV show in the XML file I've attached at the end of this post. What I'm trying to do now is pull out/list the data from each of the <SeriesName> tags throughout the document. Currently, I'm only able to get data the first instance of that XML field using the... (9 Replies)
Discussion started by: hungryd
9 Replies

2. UNIX for Beginners Questions & Answers

How can we extract specific elements from XML?

Hi, I have a requirement to extract specific element value dynamically from XML message. Here is the sample message: <File> <List> <main> <dir>doc/store834/archive</dir> <count>5</count> </main> <main> <dir>doc/store834/extract</dir> <count>6</count> </main> <main> ... (3 Replies)
Discussion started by: renukeswar
3 Replies

3. Shell Programming and Scripting

Parse xml in shell script and extract records with specific condition

Hi I have xml file with multiple records and would like to extract records from xml with specific condition if specific tag is present extract entire row otherwise skip . <logentry revision="21510"> <author>mantest</author> <date>2015-02-27</date> <QC_ID>334566</QC_ID>... (12 Replies)
Discussion started by: madankumar.t@hp
12 Replies

4. Shell Programming and Scripting

Extract specific line in an html file starting and ending with specific pattern to a text file

Hi This is my first post and I'm just a beginner. So please be nice to me. I have a couple of html files where a pattern beginning with "http://www.site.com" and ending with "/resource.dat" is present on every 241st line. How do I extract this to a new text file? I have tried sed -n 241,241p... (13 Replies)
Discussion started by: dejavo
13 Replies

5. Shell Programming and Scripting

Extract a particular xml only from an xml jar file

Hi..need help on how to extract a particular xml file only from an xml jar file... thanks! (2 Replies)
Discussion started by: qwerty000
2 Replies

6. Shell Programming and Scripting

Shell script to extract data in repeating tags from xml

Hi, I am new to shell scripting. I need to extract data between repeating tags from an xml file and store the data in an array to process it further. <ns1:root xmlns:ns1="http://example.com/config"> <ns1:interface>in1</ns1:interface> <ns1:operation attribute1="true" attribute2="abd"... (2 Replies)
Discussion started by: sailendra
2 Replies

7. Shell Programming and Scripting

How to add the multiple lines of xml tags before a particular xml tag in a file

Hi All, I'm stuck with adding multiple lines(irrespective of line number) to a file before a particular xml tag. Please help me. <A>testing_Location</A> <value>LA</value> <zone>US</zone> <B>Region</B> <value>Russia</value> <zone>Washington</zone> <C>Country</C>... (0 Replies)
Discussion started by: mjavalkar
0 Replies

8. Shell Programming and Scripting

bash extract all occurences delimited from <name> and </name> tags from an xml file

I need to extract all text delimited from <name> and </name> tags from an xml file, but not only first occurence. I need to extract all occurences. I've tried with this command: awk -F"<name>|</name>" 'NF>2{print $2}' but it give only first occurence. How can i modify it? (18 Replies)
Discussion started by: ingalex
18 Replies

9. UNIX for Dummies Questions & Answers

Extract a specific number from an XML file based on the start and end tags

Hello People, I have the following contents in an XML file ........... ........... .......... ........... <Details = "Sample Details"> <Name>Bob</Name> <Age>34</Age> <Address>CA</Address> <ContactNumber>1234</ContactNumber> </Details> ........... ............. .............. (4 Replies)
Discussion started by: sushant172
4 Replies

10. Shell Programming and Scripting

extract specific data from xml format file.

Hi, I need to extract the start time value (bold, red font) under the '<LogEvent ID="Timer Start">' tag (black bold) from a file with the following pattern. There are other LogEventIDs listed in the file as well, making it harder for me to extract out the specific start time that I need. . .... (7 Replies)
Discussion started by: 60doses
7 Replies
Login or Register to Ask a Question