bendon has asked for the wisdom of the Perl Monks concerning the following question:
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,
I would like it to be replaced to be,<datafield tag="650" ind1=" " ind2="2"> <subfield code="a">Toxicology.</subfield> <subfield code="0">(OSt)1363</subfield> </datafield>
My Perl code is here,<datafield tag="650" ind1=" " ind2="2"> <subfield code="a">Research work </subfield> <subfield code="0">(OSt)1000</subfield> </datafield>
Below is my XML file. Thanksmy $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; }
<?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 & 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>
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Replacing Data within XML Element
by Anonymous Monk on May 24, 2013 at 22:12 UTC | |
|
Re: Replacing Data within XML Element
by Anonymous Monk on May 24, 2013 at 21:59 UTC |