I am fairly new to Perl. I want to update a specific node value LocationID
in this XML file that matches values that I read in from a text file.
Sample XML File
<?xml version="1.0" encoding="UTF-8"?>
<TestImportFile xmlns="urn:TestImportFile-schema">
<LOCATION SOURCEID="Yes">
<LOCATIONID>F16-000100</LOCATIONID>
<LOCATIONCATEGORY>UFO ABDUCTEE</LOCATIONCATEGORY>
<LOCAL BIT="Test Case File">
<LOCALNAME>DTG2QP</LOCALNAME>
<ASSIGNEDTO>BearmanJ</ASSIGNEDTO>
<ASSIGNEDTODATETIME>2016-02-02T07:59:00</ASSIGNEDTODATETIME>
<CASE>
<CASEVALUE>21</CASEVALUE>
</CASE>
<CASE>
<CASEVALUE>35</CASEVALUE>
</CASE>
</LOCAL>
<LOCAL BIT="Test Case File">
<LOCALNAME>F4T2557</LOCALNAME>
<READINGBY>BearmanJ</READINGBY>
<READINGDATETIME>2016-04-03T06:48:00</READINGDATETIME>
<CASE>
<CASEVALUE>83</CASEVALUE>
</CASE>
<CASE>
<CASEVALUE>40</CASEVALUE>
</CASE>
</LOCAL>
</LOCATION>
<LOCATION SOURCEID="Yes">
<LOCATIONID>F16-000101</LOCATIONID>
<LOCATIONCATEGORY>UFO ABDUCTEE</LOCATIONCATEGORY>
<LOCAL BIT="Test Case File">
<LOCALNAME>ZGV4TF</LOCALNAME>
<ASSIGNEDTO>BearmanJ</ASSIGNEDTO>
<ASSIGNEDTODATETIME>2016-02-02T07:59:00</ASSIGNEDTODATETIME>
<CASE>
<CASEVALUE>34</CASEVALUE>
</CASE>
<CASE>
<CASEVALUE>67</CASEVALUE>
</CASE>
</LOCAL>
<LOCAL BIT="Test Case File">
<LOCALNAME>E5Y7456</LOCALNAME>
<READINGBY>BearmanJ</READINGBY>
<READINGDATETIME>2016-04-03T06:48:00</READINGDATETIME>
<CASE>
<CASEVALUE>53</CASEVALUE>
</CASE>
<CASE>
<CASEVALUE>20</CASEVALUE>
</CASE>
</LOCAL>
</LOCATION>
<LOCATION SOURCEID="Yes">
<LOCATIONID>F16-000102</LOCATIONID>
<LOCATIONCATEGORY>UFO ABDUCTEE</LOCATIONCATEGORY>
<LOCAL BIT="Test Case File">
<LOCALNAME>ZGV4TF</LOCALNAME>
<ASSIGNEDTO>BearmanJ</ASSIGNEDTO>
<ASSIGNEDTODATETIME>2016-02-02T07:59:00</ASSIGNEDTODATETIME>
<CASE>
<CASEVALUE>34</CASEVALUE>
</CASE>
<CASE>
<CASEVALUE>67</CASEVALUE>
</CASE>
</LOCAL>
<LOCAL BIT="Test Case File">
<LOCALNAME>E5Y7456</LOCALNAME>
<READINGBY>BearmanJ</READINGBY>
<READINGDATETIME>2016-04-03T06:48:00</READINGDATETIME>
<CASE>
<CASEVALUE>53</CASEVALUE>
</CASE>
<CASE>
<CASEVALUE>20</CASEVALUE>
</CASE>
</LOCAL>
</LOCATION>
</TestImportFile>
Sample Text File
F16-000100:2B-16-NOR-0005-J3
F16-000101:2B-16-NOR-0005-J4
F16-000102:2B-16-NOR-0005-J5
I can read the test file into an array but I cannot determine how to search the XML file for the match then update that value in the XML file with the value desired.
My script to read in text file:
my $filename = '1TestData.txt';
open(FILE, $filename) or die "Could not read from $filename, program halting.";
my $output = '1TestOutput.txt';
open(OUTPUT, '>'.$output) or die "Can't create $output.\n";
while(<FILE>){
chomp;
@fields = split(':', $_);
print "$fields[0]\n";
}
close FILE;
I want to update the LOCATIONID
value to the second value of the matching value found in the text file.
<LOCATIONID>F16-000100</LOCATIONID>
Desired Result:
<LOCATIONID>2B-16-NOR-0005-J3</LOCATIONID>
without touching anything else in the XML file.