скрипт perl для замены значений xml - PullRequest
0 голосов
/ 31 декабря 2011

У меня есть этот XML-файл:

<?xml version="1.0" encoding="ISO-8859-1"?>
<BroadsoftDocument protocol = "OCI" xmlns="C" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <sessionId xmlns="">169.254.52.85,16602326,1324821125562</sessionId>
    <command xsi:type="UserAddRequest14sp9" xmlns="">
        <serviceProviderId>AtyafBahrain</serviceProviderId>
        <groupId>LoadTest</groupId>
        <userId>user_0002@atyaf.me</userId>
        <lastName>0002</lastName>
        <firstName>user</firstName>
        <callingLineIdLastName>0002</callingLineIdLastName>
        <callingLineIdFirstName>user</callingLineIdFirstName>
        <password>123456</password>
        <language>English</language>
        <timeZone>Asia/Bahrain</timeZone>
        <address/>
  </command>
</BroadsoftDocument>

и мне нужно заменить значения некоторых полей (UserID, firstName, password) и вывести файл для сохранения с тем же именем.

Используя приведенный ниже код, я изменю синтаксис полей xml (нарушается формат xml):

XMLout(     $xml,     KeepRoot => 1,     NoAttr => 1,     OutputFile => $xml_file, ); 

Подскажите, пожалуйста, как отредактировать XML-файл без изменения его синтаксиса?

Ответы [ 2 ]

0 голосов
/ 15 февраля 2012

Вы можете оформить XML :: Простой парсер для Perl. Вы можете обратиться к сайту CPAN. Я использовал его для разбора XML-файлов, но я думаю, что это также должно позволить модификацию.

0 голосов
/ 15 февраля 2012
# open XML file (input the XML file name)
open (INPUTFILE, "+<$filename_1");    
@file = <INPUTFILE>;
seek INPUTFILE,0,0;
foreach $file (@file)
{
    # Find string_1 and replace it by string_2
    $file =~ s/$str_1/$str_2/g;

    # write to file
    print INPUTFILE $file;   
}
close INPUTFILE;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...