<style type="text/css"> </style>

Hello Team,

I have an XML file below and I want to replace the data within the elements inside <datafield tag="650" ind1=" " ind2="2"> where the criteria matches the data within <subfield code="0">(OSt)1363</subfield>.

For instance if i have this,

<datafield tag="650" ind1=" " ind2="2"> <subfield code="a">Toxicology.</subfield> <subfield code="0">(OSt)1363</subfield> </datafield>
I would like it to be replaced to be,
<datafield tag="650" ind1=" " ind2="2"> <subfield code="a">Research work </subfield> <subfield code="0">(OSt)1000</subfield> </datafield>
My Perl code is here,
my $twig = XML::Twig->new( twig_handlers => { subfield => \&editSubfield, }, pretty_print => 'indented', ); $twig->parse($xml); sub editSubfield { my ( $twig, $href) = @_; my $text = $href->text(); $href->set_text($rcnnew) if $text eq $rcnorig; }
Below is my XML file. Thanks
<?xml version="1.0" encoding="UTF-8"?> <collection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/ +standards/marcxml/schema/MARC21slim.xsd" xmlns="http://www.loc.gov/MARC21/slim"> <record> <leader>00722cam a2200241 4500</leader> <controlfield tag="001">1278</controlfield> <controlfield tag="005">19830304000000.0</controlfield> <controlfield tag="008">690320s1969 mdu b 001 0 eng </controlfield> <datafield tag="010" ind1=" " ind2=" "> <subfield code="a"> 68022712</subfield> </datafield> <datafield tag="040" ind1=" " ind2=" "> <subfield code="a">DLC</subfield> <subfield code="c">DLC</subfield> <subfield code="d">NOH</subfield> </datafield> <datafield tag="050" ind1="0" ind2=" "> <subfield code="a">RA1211</subfield> <subfield code="b">.G5 1969</subfield> </datafield> <datafield tag="082" ind1=" " ind2=" "> <subfield code="a">615.9</subfield> </datafield> <datafield tag="100" ind1="1" ind2=" "> <subfield code="a">Gleason, Marion N.</subfield> <subfield code="0">(OSt)1362</subfield> </datafield> <datafield tag="245" ind1="1" ind2="0"> <subfield code="a">Clinical toxicology of commercial products;</subfie +ld> <subfield code="b">acute poisoning</subfield> <subfield code="c">by Marion N. Gleason and others</subfield> </datafield> <datafield tag="250" ind1=" " ind2=" "> <subfield code="a">3d ed.</subfield> </datafield> <datafield tag="260" ind1=" " ind2=" "> <subfield code="a">Baltimore,</subfield> <subfield code="b">Williams &amp; Wilkins,</subfield> <subfield code="c">1969.</subfield> </datafield> <datafield tag="300" ind1=" " ind2=" "> <subfield code="a">1 v. (various pagings)</subfield> <subfield code="c">26 cm.</subfield> </datafield> <datafield tag="504" ind1=" " ind2=" "> <subfield code="a">Includes bibliographies.</subfield> </datafield> <datafield tag="650" ind1=" " ind2="2"> <subfield code="a">Toxicology.</subfield> <subfield code="0">(OSt)1363</subfield> </datafield> <datafield tag="650" ind1=" " ind2="2"> <subfield code="a">Poisons.</subfield> <subfield code="0">(OSt)1364</subfield> </datafield> <datafield tag="935" ind1=" " ind2=" "> <subfield code="a">AAA-0400</subfield> </datafield> <datafield tag="945" ind1=" " ind2=" "> <subfield code="a">QV 600 G554 1969</subfield> </datafield> <datafield tag="999" ind1=" " ind2=" "> <subfield code="c">391</subfield> <subfield code="d">391</subfield> </datafield> </record> </collection>

In reply to Replacing Data within XML Element by bendon

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.