Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Заполнить данные XML файла (http://forum.oszone.net/showthread.php?t=279596)

smotritel89 21-03-2014 12:26 2326610

Заполнить данные XML файла
 
Всем привет!

Есть список в файле TXT

11111
22222
33333
44444
55555

Есть файл xml, такой структуры, в нем строки:

<listitem>
<variable name="Id">1</variable>
<variable name="mask">XXXXX</variable>
</listitem>

<listitem>
<variable name="Id">2</variable>
<variable name="mask">XXXXX</variable>
</listitem>

Как можно данные из файла TXT, занести на место XXXXX в XML, естественно по порядку?

Iska 21-03-2014 13:13 2326626

Цитата:

Цитата smotritel89
Есть файл xml, такой структуры»

Не бывает таких xml-файлов, упакуйте образец реального xml-файла в архив и приложите.

Цитата:

Цитата smotritel89
Как можно данные из файла TXT, занести на место XXXXX в XML, естественно по порядку? »

Чем определяется порядок? Как поступать в случае разного количества строк в txt и числа узлов «listitem» в xml-файле?

smotritel89 21-03-2014 13:42 2326635

да это на самом деле конфигурационный файл, который нужно заполнить списком сайтов.

я от туда просто выделил узлы в отдельный файл и в которые нужно заполнить данные, в тег Url.

Код:

  <listitem>
    <variable name="Id">47</variable>
    <variable name="Enabled">1</variable>
    <variable name="Description"></variable>
    <variable name="Name">Social</variable>
    <variable name="Url">facebook.com</variable>
    <variable name="Type">2</variable>
  </listitem>
  <listitem>
    <variable name="Id">48</variable>
    <variable name="Enabled">1</variable>
    <variable name="Description"></variable>
    <variable name="Name">Social</variable>
    <variable name="Url">twitter.com</variable>
    <variable name="Type">2</variable>
  </listitem>

будем считать что строк в TXT, и узлов в файле конфига одинаковое.
ну например есть тег Id, он идет по возрастанию. например 1 строку из TXT занести в тег Url, первого узла в файле конфига. и так по порядку.

Iska 21-03-2014 13:54 2326640

Цитата:

Цитата smotritel89
да это на самом деле конфигурационный файл, который нужно заполнить списком сайтов.
я от туда просто выделил узлы в отдельный файл и в которые нужно заполнить данные, в тег Url. »

smotritel89, не надо выделять. Повторяю: упакуйте xml-файл в архив и выложите его.

smotritel89 21-03-2014 13:56 2326642

Вложений: 1
Вот

Kazun 21-03-2014 14:56 2326674

PowerShell:
Код:

$file = "C:\winroute.cfg"
$xml = [xml](Get-Content $file)
$url = Get-Content url.txt

$ug= $xml.config.list[14]

for($i=0;$i -lt $url.count;$i++) {
        $ug.listitem[$i].variable[4]."#text" = $urls[$i]
}

$xml.Save($file)


Iska 21-03-2014 14:58 2326676

С каким именно из «list» работаем?

Iska 21-03-2014 15:20 2326683

Kazun, «name="UrlGroups"», это точно? Может, стоит тогда ориентироваться именно по имени?!

Kazun 21-03-2014 15:53 2326699

Iska, пожалуй Вы правы - лучше по имени. А с UrlGroups - не уверен

smotritel89 , если потребуется по имени
Код:

$ug= $xml.config.list[14] заменить на
$ug.SelectNodes("//list[@name='UrlGroups']")


Iska 22-03-2014 00:09 2326884

Цитата:

Цитата Kazun
А с UrlGroups - не уверен »

Ну, коль автор счёл полезным — будем считать, что Вы верно выбрали узел.


Время: 20:32.

Время: 20:32.
© OSzone.net 2001-