PDA

Показать полную графическую версию : [решено] Подскажите как получить текст расположенный между тегами


Страниц : 1 [2]

Vadikan
30-03-2013, 15:12
[xml]$text = Get-Content "C:\test\test.xml"
$text.clients.client
То выдает
ANKETA
------
1008
2055508 »
Угу, ведь вы не указали во второй строке кода узел anketa.

Еще раз вернемся к сообщению 7:
[xml]$text = Get-Content C:\test\test.txt
$text.clients.client.anketa #вывод "как есть"
$text.clients.client.anketa.replace("`n","") #вывод в одну строку

На этом я прошу простить меня, но вы исчерпали мой запас терпения на два ближайших дня... Надеюсь, коллеги по форуму выведут вас из трех сосен.

dark-------13
30-03-2013, 15:25
Применяю данный скрипт
[xml]$text = Get-Content C:\test\test.xml
$text.clients.client.anketa.replace("`n","")

ДЛЯ xml c содержимым

<?xml version="1.0" encoding="utf-8"?>
<CLIENTS>
<CLIENT>
<ANKETA>1008
sdjkjhdjfh</ANKETA>
</CLIENT>
<CLIENT>
<ANKETA>2055508</ANKETA>
</CLIENT>
</CLIENTS>


Выдает ошибку:
Нельзя вызвать метод для выражения со значением NULL.
C:\test\1.ps1:2 знак:36
+ $text.clients.client.anketa.replace <<<< ("`n","")
+ CategoryInfo : InvalidOperation: (replace:String) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull

Как должен выглядеть скрипт чтобы обработать xml документ данного типа и получить на выходе данные из двух тегов anketa в одном из которых значение 1008sdjkjhdjfh ,а во втором 2055508 !?

Kazun
30-03-2013, 16:15
PS > $x.CLIENTS.CLIENT[0].ANKETA
1008
sdjkjhdjfh
PS > $x.CLIENTS.CLIENT[1].ANKETA
2055508
PS > $x.CLIENTS.CLIENT[0].ANKETA.replace("`n","")
1008 sdjkjhdjfh

dark-------13
30-03-2013, 18:50
Уважаемый Kazun спасибо за помощь, после вашей подсказки родился вот такой скрипт, вот только не пойму как сделать так, чтобы он закончил обрабатывать файл - после обработки всех строк из xml документа, количество строк может меняться после изменений вносимых в XML, и выгрузить результат работы скрипта в файл ..... ?

[xml]$text = Get-Content "D:\base64\obr.xml"
$a="<img src=""data:image/png;base64,"
$b=""" />"
$s=1
while ($s -le 175){

for ($i = 1; $i -le 1 ;$i++){write $a;
$text.clients.client[$s].portrait;
write $b;

}
$s++
}

Kazun
30-03-2013, 19:15
[xml]$text = Get-Content "D:\base64\obr.xml"
$text.CLIENTS.client | Foreach {"<img src=""data:image/png;base64," + $_.portrait + """ />" } | Out-File result.txt




© OSzone.net 2001-2012