Sponsored Content
Top Forums Shell Programming and Scripting How to remove some xml tag lines using shell script Post 302485565 by fpmurphy on Wednesday 5th of January 2011 02:11:09 PM
Old 01-05-2011
If xsltproc is available to you, the following script (update.sh) will do what you want assuming that the input file is extract.xml and the output file is updated.xml.
Code:
#!/bin/bash

if test -z "$1"
then
   echo "ERROR: No command-line argument provided"
   exit 1
fi
WorkOrder=$1

[[ -f updated.xml ]] || {
   cat > updated.xml <<EOF
<?xml version="1.0" encoding="utf-8" ?>
<scbm-extract version="3.3">
   <workOrderList>
   </workOrderList>
</scbm-extract>
EOF
}

cat > updatexsl.$$ <<EOF
<xsl:stylesheet version="1.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

   <!-- XSLTPROC pass in as -param name "'value'" etc -->
   <xsl:param name="woc">EMPTY</xsl:param>

   <xsl:output method="xml" indent="yes" encoding="utf-8"/>
   <xsl:strip-space elements="*"/>

   <xsl:template match="/">
      <xsl:apply-templates />
   </xsl:template>

   <xsl:template match="scbm-extract">
     <xsl:copy>
        <xsl:apply-templates select="workOrderList"/>
     </xsl:copy>
   </xsl:template>

   <xsl:template match="workOrderList">
     <xsl:copy>
        <xsl:apply-templates select="workOrder"/>
        <xsl:copy-of select="document('./extract.xml')//workOrder[workOrderCode=\$woc]" />
     </xsl:copy>
   </xsl:template>

   <xsl:template match="workOrder">
       <xsl:copy-of select = "." />
   </xsl:template>

</xsl:stylesheet>
EOF

xsltproc -param woc "'${WorkOrder}'" updatexsl.$$ updated.xml > updated.$$

mv updated.$$ updated.xml

rm -f updated.$$
rm -f updatexsl.$$

exit 0

Here is the output for the first update (184851):
Code:
$ ./update.sh 184851
$ cat updated.xml
<?xml version="1.0" encoding="utf-8"?>
<scbm-extract>
  <workOrderList>
    <workOrder>
      <branchCode>2022:100</branchCode>
      <workOrderCode>184851</workOrderCode>
    </workOrder>
  </workOrderList>
</scbm-extract>
$

and here is the output for the second update (184852):
Code:
$ ./update.sh 184852
$ cat updated.xml
<?xml version="1.0" encoding="utf-8"?>
<scbm-extract>
  <workOrderList>
    <workOrder>
      <branchCode>2022:100</branchCode>
      <workOrderCode>184851</workOrderCode>
    </workOrder>
    <workOrder>
      <branchCode>2023:100</branchCode>
      <workOrderCode>184852</workOrderCode>
    </workOrder>
  </workOrderList>
</scbm-extract>

 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to remove xml namespace from xml file using shell script?

I have an xml file: <AutoData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Table1> <Data1 10 </Data1> <Data2 20 </Data2> <Data3 40 </Data3> <Table1> </AutoData> and I have to remove the portion xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" only. I tried using sed... (10 Replies)
Discussion started by: Gary1978
10 Replies

2. Shell Programming and Scripting

shell command to remove some XML tag is needed

Hi all, I have a file which i have to remove some line from it, the lines that i have to remove from my file is as below: </new_name></w"s" langue="Fr-fr" version="1.0" encoding="UTF-8" ?> <New_name> and it is finding at the middle of my file, is there any command line in linux to do it or do... (10 Replies)
Discussion started by: id_2pc
10 Replies

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

4. UNIX for Advanced & Expert Users

Shell Script to read XML tags and the data within that tag

Hi unix Gurus, I am really new to Unix Scripting. Please help me to create a shell script which reads the xml file and from that i need to fetch a particular information. For example <SOURCE BUSINESSNAME ="" DATABASETYPE ="Teradata" DBDNAME ="DWPROD3" DESCRIPTION ="" NAME... (2 Replies)
Discussion started by: SmilePlease
2 Replies

5. Shell Programming and Scripting

How can I remove some xml tag lines using shell script?

Hi All, My name is Prathyu and I am working as a ETL develper. I have one requirement to create a XML file based on the provided XSD file. As per the Datastage standards Key(repeatable) field does not contain any Null values so I am inserting some dummy tag line to that XML file. ... (14 Replies)
Discussion started by: Prathyu
14 Replies

6. Shell Programming and Scripting

Modify XML tag using shell script

Hi All Need some help with a unix shell script. I have a XML file as shown below: <Root> <Service> <endPoint type="SOAP" protocol="http"> <provider>ABCD</provider> <urlRewrite>/service/xyz/getAccountDetails</urlRewrite> <timeout>30</timeout> </endPoint> </Service> <Service> <endPoint... (3 Replies)
Discussion started by: abhilwa
3 Replies

7. Shell Programming and Scripting

Print a closing XML tag shell script

I have a shell script that does everything I need it to do. But, when I was testing it I realized it doesn't print the closing XML tag.... Does anyone know how to incorporate printing the XML tag with my script? I am using AWK any help would be appreciated. (4 Replies)
Discussion started by: risarose87
4 Replies

8. Shell Programming and Scripting

How to remove html tag which has multiple lines in SHELL?

I want to clean a html file. I try to remove the script part in the html and remove the rest of tags and empty lines. The code I try to use is the following: sed '/<script/,/<\/script>/d' webpage.html | sed -e 's/<*>//g' | sed '/^\s*$/d' > output.txt However, in this method, I can not... (10 Replies)
Discussion started by: YuhuiFeng
10 Replies

9. Shell Programming and Scripting

Read xml tags and then remove the tag using shell script

<Start> <Header> This is header section </Header> <Body> <Body_start> This is body section <a> <b> <c> <st>111</st> </c> <d> <st>blank</st> </d> </b> </a> </Body_start> <Body_section> This is body section (3 Replies)
Discussion started by: RJG
3 Replies

10. Shell Programming and Scripting

Moving XML tag/contents after specific XML tag within same file

Hi Forum. I have an XML file with the following requirement to move the <AdditionalAccountHolders> tag and its content right after the <accountHolderName> tag within the same file but I'm not sure how to accomplish this through a Unix script. Any feedback will be greatly appreciated. ... (19 Replies)
Discussion started by: pchang
19 Replies
XML_SET_OBJECT(3)							 1							 XML_SET_OBJECT(3)

xml_set_object - Use XML Parser within an object

SYNOPSIS
bool xml_set_object (resource $parser, object &$object) DESCRIPTION
This function allows to use $parser inside $object. All callback functions could be set with xml_set_element_handler(3) etc and assumed to be methods of $object. PARAMETERS
o $parser - A reference to the XML parser to use inside the object. o $object - The object where to use the XML parser. RETURN VALUES
Returns TRUE on success or FALSE on failure. EXAMPLES
Example #1 xml_set_object(3) example <?php class xml { var $parser; function xml() { $this->parser = xml_parser_create(); xml_set_object($this->parser, $this); xml_set_element_handler($this->parser, "tag_open", "tag_close"); xml_set_character_data_handler($this->parser, "cdata"); } function parse($data) { xml_parse($this->parser, $data); } function tag_open($parser, $tag, $attributes) { var_dump($parser, $tag, $attributes); } function cdata($parser, $cdata) { var_dump($parser, $cdata); } function tag_close($parser, $tag) { var_dump($parser, $tag); } } // end of class xml $xml_parser = new xml(); $xml_parser->parse("<A ID='hallo'>PHP</A>"); ?> PHP Documentation Group XML_SET_OBJECT(3)
All times are GMT -4. The time now is 02:38 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy