Показать полную графическую версию : [решено] Подскажите как получить текст расположенный между тегами
dark-------13
29-03-2013, 12:17
Здравствуйте,
Подскажите пожалуйста какими функциями воспользоваться, чтобы получить текст расположенный между тегами
Пример:
<signature>asdjkf05545jaskld5455451fjkljas564545kldjfkl;nmeje115787855ejegh</signature>
dark-------13, в Powershell:
[xml]$text = Get-Content C:\test\test.txt
$text.signature
dark-------13
29-03-2013, 14:31
Сделал так
$conf = "D:\base64\obr.xml" [xml]$config = get-content $conf $config.PORTRAIT $config | Out-File D:\base64\newfile.xml Write-Host $config
Данные не выводит почему-то ..... :(
dark-------13
29-03-2013, 14:50
И так пробовал
$xmldata = get-content "D:\base64\obr.xml" $global:xmldata = get-content "D:\base64\obr.xml" $xmldata.TodoList.Task | %{$_.CLIENTS.CLIENT.PORTRAIT} | select-object -unique $xmldata.CLIENTS.CLIENT.PORTRAIT
Не выдает список с данными
dark-------13, может быть, пора показать файл или его фрагмент, достаточный для анализа? Конфиденциальные данные замените на бла-бла.
dark-------13
30-03-2013, 10:53
Пример:
Текст который заключен в тег signature расположен не в одну строку, а в несколько строк
<clients>
<img>55564645271</img>
<signature> sddfsdfs45454555dfsfd
sdfsdfsdfdssdsdsddddff54454545ffff
ddffddfdffdfddf</signature>
<tag>Солнце</tag>
</clients>
dark-------13, ну тогда так:
[xml]$text = Get-Content C:\test\test.txt
$text.clients.signature #вывод "как есть"
$text.clients.signature.replace("`n","") #вывод в одну строку
Вам нужно все узлы XML последовательно прописать перед signature.
dark-------13
30-03-2013, 11:32
Вот такое не обрабатывает:
<?xml version="1.0" encoding="utf-8"?>
<CLIENTS>
<CLIENT>
<ANKETA_ID>1008393</ANKETA_ID>
</CLIENT>
</CLIENTS>
Да все обрабатывает...
$text.clients.client.anketa_id
Покажите команду, которую вы используете.
P.S. Сначала вставляйте код в поле сообщения, потом выделяйте и жмите # на панели.
dark-------13
30-03-2013, 12:05
Команда ниже разве не должна выводить текст расположенный между тегами anketa_id
[xml]$text = Get-Content D:\base64\obr.xml $text.clients.client.anketa_id
Если написать так
[xml]$text = Get-Content D:\base64\obr.xml $text.clients.client
то выдает то что между тегами client
разве не должна выводить текст расположенный между тегами anketa_id »
Должна, если только вы ее в две строки напишете.
Если написать так
[xml]$text = Get-Content D:\base64\obr.xml $text.clients.client
то выдает то что между тегами client »
Так и должно быть.
Если честно, я не понимаю, в чем ваша проблема. Вы показываете мне разные фрагменты файлов каждый раз, причем в отрыве от команд.
В общем, последовательно указывайте узлы XML, и будет выводиться тот, что указан последним.
dark-------13
30-03-2013, 12:46
Сейчас xml документ выглядит так
<?xml version="1.0" encoding="utf-8"?>
<CLIENTS>
<CLIENT>
<ANKETA>
1008393
</ANKETA>
Команду даю такую [xml]$text = Get-Content D:\base64\obr.xml
$text.clients.client.anketa
и ничего не выдает
Пробовал использовать эту же команду с документом
<?xml version="1.0" encoding="utf-8"?>
<CLIENTS>
<CLIENT>
<ANKETA>1008393</ANKETA>
Эффекта ноль
и ничего не выдает »
Да? И никаких ошибок не пишет? А мне говорит
Не удается преобразовать значение "System.Object[]" в тип "System.Xml.XmlDocument". Ошибка: "Непредусмотренный конец файла. Не закрыты следующие элементы: CLIENT, CLIENTS., строка 4, позиция 25."
Теги надо закрыть,
<?xml version="1.0" encoding="utf-8"?>
<CLIENTS>
<CLIENT>
<ANKETA>1008393</ANKETA>
</CLIENT>
</CLIENTS>
Мы с вами ходим вокруг до около. А знаете почему? Потому что вы показываете мне какой-то фрагмент, я просто вставляю его в тестовый файл, составляю команду - все работает. Потом вы берете эту команду и пытаетесь ее применять к какому-то другому файлу.
Что характерно, в сообщении 8 (http://forum.oszone.net/post-2122088-8.html) теги были закрыты. Вы их удалили - ничего не работает. Ну так ССЗБ.
dark-------13
30-03-2013, 13:45
Спасибо за помощь и терпение Vadikan, пример полного документа не привожу т.к. в нем 65000 строк которые пришлось бы править суть понял - буду искать ошибку в xml документе, когда теги закрыты ищет все как положено в тестовом xml документе.
dark-------13, возможно, XML не валидный. Попробуйте http://www.xmlvalidation.com/
dark-------13
30-03-2013, 13:54
Вопрос, - а как такой файл обрабатывать если нужно вытащить данные из тега anketa ?
<?xml version="1.0" encoding="utf-8"?>
<CLIENTS>
<CLIENT>
<ANKETA>1008</ANKETA>
</CLIENT>
<CLIENT>
<ANKETA>2055508</ANKETA>
</CLIENT>
</CLIENTS>
dark-------13, гм... да точно так же.
[xml]$text = Get-Content "C:\test\test.xml"
$text.clients.client.anketa
Рез-т
1008
2055508
P.S. Предчувствую следующий вопрос - как связать данные из anketa с client...
dark-------13
30-03-2013, 14:26
Вот что выдает
PS C:\Users\A> [xml]$text = Get-Content "D:\base64\new.xml"
$text.clients.client.anketa
Сохранил код скрипта, запустил еще раз выдает
PS C:\Users\A> D:\батники рабочие ---\ping_do_new\БезИмени2.ps1
Почемуто у меня не выполняется на тестовом файле
Предыдущий скрипт у меня должен выдавать тоже, что и у вас, но ни чего не выдает - после выполнения скрипта.
Если исправляю xml так то можно выбрать данные только таким скриптом
PS C:\Users\A> [xml]$text = Get-Content "D:\base64\new.xml"
$text.clients.client1.anketa1
<?xml version="1.0" encoding="utf-8"?>
<CLIENTS>
<CLIENT1>
<ANKETA1>1008</ANKETA1>
</CLIENT1>
<CLIENT2>
<ANKETA2>2055508</ANKETA2>
</CLIENT2>
</CLIENTS>
dark-------13, а вы уберите кириллицу и пробелы из пути
iex D:\scripts\xml.ps1
dark-------13
30-03-2013, 14:44
Создал и сохранил файл test.xml в папке test на диске C
Переименовал и сохранил там же скрипт 1.ps1
После выполнения такая ерунда
PS C:\Users\A> C:\test\1.ps1
Скрипты выполняются от имени администратора в Powershell_ISE.exe
Если делаю так
[xml]$text = Get-Content "C:\test\test.xml"
$text.clients.client
То выдает
ANKETA
------
1008
2055508
Что-то я запутался при каком коде и что он должен выводить ??? Данные я то получить получил, но когда мы обратились к полю anketa командой $text.clients.client.anketa почему он не выводит данные, и должен ли выводить ???
Когда идет такой код в xml
<?xml version="1.0" encoding="utf-8"?>
<CLIENTS>
<CLIENT>
<ANKETA>1008
sdjkjhdjfh</ANKETA>
</CLIENT>
<CLIENT>
<ANKETA>2055508</ANKETA>
</CLIENT>
</CLIENTS>
Данные выводит так не выводит символы sdjkjhdjfh, что очень необходимо - потому, что в xml документе, тегов содержащих текст на разных строках очень много и именно эти данные нужно выбрать !!!
ANKETA
------
1008...
2055508
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.