Найти и заменить записи в телефонной книге XML - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть следующая телефонная книга XML, в которой номера телефонов начинаются с 07 и 01, и я хотел бы заменить их на +447 и +441 соответственно. Кто-нибудь может предложить простой способ сделать это, пожалуйста?

    <directory>
    <Entry>
      <Name>***Travis</Name>
      <extension>02089425943</extension>
   </Entry>

   <Entry>
      <Name>***Nina</Name>
      <extension>0177377106</extension>
   </Entry>

   <Entry>
  <Name>***Yusra</Name>
  <extension>07790400192</extension>
   </Entry>

   <Entry>
     <Name>***Raoul</Name>
     <extension>07818838683</extension>
    </Entry>
 </directory> <directory>

Любая помощь с благодарностью получена ..

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Вы также можете использовать встроенную поддержку PowerShell XML.

$xml = [xml] (Get-Content ".\directory.xml")
foreach($entry in $xml.directory.Entry)
{
    if ($entry.extension.StartsWith("07"))
    {
        $entry.extension = "+447" + $entry.extension.Substring(2)
    }
    if ($entry.extension.StartsWith("01"))
    {
        $entry.extension = "+441" + $entry.extension.Substring(2)
    }
}
$xml.directory.Entry
$xml.Save(".\directory.xml")

# Name      extension    
# ----      ---------    
# ***Travis 02089425943  
# ***Nina   +44177377106 
# ***Yusra  +447790400192
# ***Raoul  +447818838683
0 голосов
/ 11 сентября 2018

Вы можете просто рассматривать это как замену в виде простого текста:

(Get-Content 'C:\folder\phonebook.xml') `
    -replace '<extension>01','<extension>+441' `
    -replace '<extension>07','<extension>+447' |
        Set-Content 'C:\folder\phonebook.xml'

Get-Content заключено в квадратные скобки, так что powershell считывает его, а затем снимает блокировку файла, без этого вы получите ошибку, когдаиспользуя Set-Content.

Я использую обратные метки, чтобы поместить команду в несколько строк, это просто делает ее более читабельной, чем однострочный:

(Get-Content 'C:\folder\phonebook.xml') -replace '<extension>01','<extension>+441' -replace '<extension>07','<extension>+447' | Set-Content 'C:\folder\phonebook.xml'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...