Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Подскажите как получить текст расположенный между тегами

Ответить
Настройки темы
PowerShell - [решено] Подскажите как получить текст расположенный между тегами

Старожил


Сообщения: 169
Благодарности: 4

Профиль | Отправить PM | Цитировать


Здравствуйте,

Подскажите пожалуйста какими функциями воспользоваться, чтобы получить текст расположенный между тегами
Пример:
<signature>asdjkf05545jaskld5455451fjkljas564545kldjfkl;nmeje115787855ejegh</signature>

Отправлено: 12:17, 29-03-2013

 

(*.*)


Сообщения: 36574
Благодарности: 6708

Профиль | Сайт | Отправить PM | Цитировать


Цитата dark-------13:
разве не должна выводить текст расположенный между тегами anketa_id »
Должна, если только вы ее в две строки напишете.
Цитата dark-------13:
Если написать так
[xml]$text = Get-Content D:\base64\obr.xml $text.clients.client
то выдает то что между тегами client »
Так и должно быть.

Если честно, я не понимаю, в чем ваша проблема. Вы показываете мне разные фрагменты файлов каждый раз, причем в отрыве от команд.

В общем, последовательно указывайте узлы XML, и будет выводиться тот, что указан последним.

-------
Канал Windows 11, etc | Чат @winsiders


Отправлено: 12:26, 30-03-2013 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Старожил


Сообщения: 169
Благодарности: 4

Профиль | Отправить PM | Цитировать


Сейчас 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>
Эффекта ноль

Отправлено: 12:46, 30-03-2013 | #12


(*.*)


Сообщения: 36574
Благодарности: 6708

Профиль | Сайт | Отправить PM | Цитировать


Цитата dark-------13:
и ничего не выдает »
Да? И никаких ошибок не пишет? А мне говорит
Код: Выделить весь код
Не удается преобразовать значение "System.Object[]" в тип "System.Xml.XmlDocument". Ошибка: "Непредусмотренный конец файла. Не закрыты следующие элементы: CLIENT, CLIENTS., строка 4, позиция 25."
Теги надо закрыть,
Код: Выделить весь код
<?xml version="1.0" encoding="utf-8"?>
<CLIENTS>
<CLIENT>
<ANKETA>1008393</ANKETA>
</CLIENT>
</CLIENTS>
Мы с вами ходим вокруг до около. А знаете почему? Потому что вы показываете мне какой-то фрагмент, я просто вставляю его в тестовый файл, составляю команду - все работает. Потом вы берете эту команду и пытаетесь ее применять к какому-то другому файлу.

Что характерно, в сообщении 8 теги были закрыты. Вы их удалили - ничего не работает. Ну так ССЗБ.

-------
Канал Windows 11, etc | Чат @winsiders


Отправлено: 13:25, 30-03-2013 | #13


Старожил


Сообщения: 169
Благодарности: 4

Профиль | Отправить PM | Цитировать


Спасибо за помощь и терпение Vadikan, пример полного документа не привожу т.к. в нем 65000 строк которые пришлось бы править суть понял - буду искать ошибку в xml документе, когда теги закрыты ищет все как положено в тестовом xml документе.

Отправлено: 13:45, 30-03-2013 | #14


(*.*)


Сообщения: 36574
Благодарности: 6708

Профиль | Сайт | Отправить PM | Цитировать


dark-------13, возможно, XML не валидный. Попробуйте http://www.xmlvalidation.com/

-------
Канал Windows 11, etc | Чат @winsiders


Отправлено: 13:51, 30-03-2013 | #15


Старожил


Сообщения: 169
Благодарности: 4

Профиль | Отправить PM | Цитировать


Вопрос, - а как такой файл обрабатывать если нужно вытащить данные из тега anketa ?

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

Последний раз редактировалось dark-------13, 30-03-2013 в 14:01.


Отправлено: 13:54, 30-03-2013 | #16


(*.*)


Сообщения: 36574
Благодарности: 6708

Профиль | Сайт | Отправить PM | Цитировать


dark-------13, гм... да точно так же.
Код: Выделить весь код
[xml]$text = Get-Content "C:\test\test.xml"
$text.clients.client.anketa
Рез-т
Код: Выделить весь код
1008
2055508
P.S. Предчувствую следующий вопрос - как связать данные из anketa с client...

-------
Канал Windows 11, etc | Чат @winsiders


Отправлено: 14:21, 30-03-2013 | #17


Старожил


Сообщения: 169
Благодарности: 4

Профиль | Отправить PM | Цитировать


Вот что выдает
Код: Выделить весь код
 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, 30-03-2013 в 14:38.


Отправлено: 14:26, 30-03-2013 | #18


(*.*)


Сообщения: 36574
Благодарности: 6708

Профиль | Сайт | Отправить PM | Цитировать


dark-------13, а вы уберите кириллицу и пробелы из пути
Код: Выделить весь код
iex D:\scripts\xml.ps1

-------
Канал Windows 11, etc | Чат @winsiders


Отправлено: 14:38, 30-03-2013 | #19


Старожил


Сообщения: 169
Благодарности: 4

Профиль | Отправить PM | Цитировать


Создал и сохранил файл 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

Последний раз редактировалось dark-------13, 30-03-2013 в 15:14.


Отправлено: 14:44, 30-03-2013 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Подскажите как получить текст расположенный между тегами

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Как получить текст того элемента, что находится в фокусе?? Romanka AutoIt 8 04-07-2011 16:25
CMD/BAT - [решено] Подскажите как получить время изменения файла -15 минут osp2008 Скриптовые языки администрирования Windows 7 29-07-2010 15:04
PHP|Кол-во строк между выбранными тегами morgan1991 Вебмастеру 0 17-03-2010 22:06
Как получить текст из textarea которую заменяет FCKeditor? EGORR_TOO Вебмастеру 2 13-09-2009 14:26
Регулярное выражение: вырезать данные между тегами venuko Вебмастеру 6 04-06-2009 16:59




 
Переход