extract data from xml- shell script using awk

Hi,

This is the xml file that i have.

  • <front-servlet platform="WAS4.0" request-retriever="SiteMinder-aware" configuration-rescan-interval="60000">
    <concurrency-throttle maximum-concurrency="50" redirect-page="/jsp/defaulterror.jsp" />
  • <loggers>
    <instrumentation class="com.american.util.frontservlet.DefaultInstrumentation" activation-tag="logRequest" enabled="false" />
    <page-hit class="com.american.util.eec.adapter.mvc.DefaultPageHitCapture" enabled="false" />
    </loggers>
    <input-pipeline />
    <output-pipeline />
  • <request-handlers>
    <handler class="com.american.sso.web.requesthandler.LogonHandler" request-name="un_logon" />
    <handler class="com.american.sso.web.requesthandler.LogonHandler" request-name="un_logonchpwd" />
    <handler class="com.american.sso.web.requesthandler.RequestParserHandler" request-name="auth_reqparser" />
    </request-handlers>
    <error-page>/jsp/defaulterror.jsp</error-page>
    <request-tag>request_type</request-tag>
  • <page-map resolution-strategy="strict">
    <page name="logon_page" path="/jsp/logon.jsp" type="local" />
    <page name="logonchpwd_page" path="/jsp/logonchpwd.jsp" type="local" />
    <page name="help_page" path="/jsp/help.jsp" type="local" />
    <page name="error_page" path="/jsp/defaulterror.jsp" type="local" />
    <page name="requestparser_page" path="/jsp/JSPTest.jsp" type="local" />
    </page-map>
    </front-servlet>

I need to extract the handler classs name under the request-handler xml tab.
Could anyone help me out with this?

Thanks a lot.

Try this:

grep '<handler class="' filename |  sed 's!\(<handler class="\)\(.*\)\(" request-name.*\)!\2!

Hi jacoden,

The code doesnt seem to work...i am not getti9ng any output:(

Jacoden,
The code is not working:(

An easy way:

awk '/handler class/ {gsub(/<handler class=/,"",$0);gsub(/ \/>/,"",$0);print}' file_xml
#! /opt/third-party/bin/perl

open(FILE, "<", "inputfile") || die "Unable to open file 'inputfile' <$!>\n";

while(<FILE>) {
  last if( /<\/request-handlers>/ );
  if( $set == 1 ) {
    s/^.*class=\"//;
    s/\".*$//;
    print;
  }
  $set = 1 if( /<request-handlers>/ );
}

close(FILE);

exit 0