Форум программистов, компьютерный форум, киберфорум
Shell, Bash
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 27.06.2016
Сообщений: 24

Как вырезать текст между двумя тэгами в xml?

27.06.2016, 10:37. Показов 4451. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
День добрый!

Ребят помогите пож. добиться удаления текста между тэгами <description>техт бла бла</description>:
http://gross-trading.com/feed.xml

Попытался сам таким макаром, но без результата:
Bash
1
2
sed 's#\(<description>\).*\(</description>\)#\1'xxxxx'\2#g' test.xml > test2.xml
sed '/<description>/,/<\/description>/{//!d}' test.xml > test2.xml

Файл сам по себе очень большой и xml утилиты вылетают при обработке.

Заранее спасибо!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.06.2016, 10:37
Ответы с готовыми решениями:

Добавить строку между тэгами в xml файл
Здравствуйте! Есть xml файл формата: &lt;ex1&gt; .. &lt;/ex1&gt; &lt;ex2&gt; .. &lt;/ex2&gt; ... ...

между двумя тэгами вытащить текст
Подскажите функцию которая возвращает текст искомый между двумя тэгами или двумя словами

Надо выкусить текст между двумя тэгами комментариев
Запутался в поисках истины, надо выкусить текст между двумя тэгами комментариев, подскажите, может быстрее окажетесь :)) Исходный...

12
74 / 74 / 17
Регистрация: 06.05.2016
Сообщений: 413
27.06.2016, 10:57
А первый вариант чем не нравится?
0
1 / 1 / 0
Регистрация: 27.06.2016
Сообщений: 24
27.06.2016, 11:03  [ТС]
Первый вариант удаляет только те, которые в одной строке.
Текст внутри тэгов в основном многострочный.
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
27.06.2016, 11:33
Для работы с тэгами существуют спец.программы типа xslt, html2txt и пр. с синтаксисом аналогичном sed
Как единоразовый вариант:
Bash
1
sed '/<description>/{:1;$!N;/<\/description>/!b1;s/<\(description>\).*\(<\/\1\)/<\1"xxxx"\2/;}'
0
1 / 1 / 0
Регистрация: 27.06.2016
Сообщений: 24
27.06.2016, 12:02  [ТС]
@Marinero

Спасибо за отклик.

Почемуто sed просто зависает с Вашим вариантом. На STDOUT ничего не выдает.
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
27.06.2016, 12:12
Вариант 2:
Bash
1
2
tag='description'
sed "/<$tag>/{h;d;};x;/<$tag>/!{x;b;};G;s/<\($tag>\).*\(<\/\1\)/<\1==\2/;t;h;$!d"
Добавлено через 1 минуту
Цитата Сообщение от bikalexander Посмотреть сообщение
Почемуто sed просто зависает
Ну Вы ж в конце название файла не забыли добавить?
0
1 / 1 / 0
Регистрация: 27.06.2016
Сообщений: 24
27.06.2016, 12:42  [ТС]
Цитата Сообщение от Marinero Посмотреть сообщение
Ну Вы ж в конце название файла не забыли добавить?
Да конечно.
Bash
1
2
tag='description'
sed "/<$tag>/{h;d;};x;/<$tag>/!{x;b;};G;s/<\($tag>\).*\(<\/\1\)/<\1==\2/;t;h;$!d"
Выдает ошибку:
Bash
1
bash: !{x: event not found
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
27.06.2016, 13:05
Надо поставить пробелы после «!» (забыл )
Bash
1
2
tag='description'
sed "/<$tag>/{h;d;};x;/<$tag>/! {x;b;};G;s/<\($tag>\).*\(<\/\1\)/<\1==\2/;t;h;$! d"
Добавлено через 2 минуты
Bash
1
sed '/<description>/{:1;$b;N;/<\/description>/! b1;s/<\(description>\).*\(<\/\1\)/<\1"xxxx"\2/;}'
0
1 / 1 / 0
Регистрация: 27.06.2016
Сообщений: 24
27.06.2016, 14:02  [ТС]
Спасибо, попробывал, сработало, но удаляет слишком много )

Предпологаю связанно это с тем что в одной строке несколько тэгов и удаляются и другии.
Файл:
gross-trading.com/file.gz
Может есть у Вас подходящий скрипт на perl или php, который сможет удалить содержимое тэга прямо внутри файла без предварительной загрузки в память?

Единственное что я нашел, так это библиотека XML::Twig вроде справляется с данной задачей...
0
 Аватар для volodin661
6674 / 2267 / 346
Регистрация: 10.12.2013
Сообщений: 7,835
27.06.2016, 17:20
Цитата Сообщение от bikalexander Посмотреть сообщение
Единственное что я нашел, так это библиотека XML::Twig вроде справляется с данной задачей...
1) XML::Fast (от Mons Anderson) побыстрее и поэкономичнее ( я проверял года 3-4 назад )

Добавлено через 25 минут
но веселее через xquery ( скачать с сайта saxonica )

там нужен-то один простой запрос типа:

JSON
1
replace value of node doc("file.xml")/description with ""
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
27.06.2016, 18:15
Если в строке несколько тэгов то придется «бороться с жадностью» регэкспов:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
sed '
    /<description>/{
        :1
        $b
        N
        /<\/description>/! b1
        /description>/{
            s//\x7/g
            s|\x7[^\x7]*</\x7|description>"xxxx"</description>|g
            /\x7/s//description>/
            t1
        }
   }'
Добавлено через 4 минуты
Все сложнее и сложнее? Поэтому и
Цитата Сообщение от Marinero Посмотреть сообщение
Для работы с тэгами существуют спец.программы типа xslt, html2txt и пр.
1
74 / 74 / 17
Регистрация: 06.05.2016
Сообщений: 413
27.06.2016, 18:29
Жесть. Побережье, Ад, Израиль.
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
27.06.2016, 18:57
Цитата Сообщение от bikalexander Посмотреть сообщение
есть у Вас подходящий скрипт на perl
Bash
1
perl -0pe 's|(description)>(?s).+?</\1|$1"xxxx"</$1|g'
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.06.2016, 18:57
Помогаю со студенческими работами здесь

Нужно из определенного текста вырезать текст идущий между двумя заданными символами
Надеюсь поймете)):(

Как вывести неформатированный текст между тэгами (HTMLAgilityPack)
Мне нужно выдрать текст между тэгами. Написал Xpath запрос, все правильно отрабатывает, нужный мне текст находит... Но вот при выводе...

Как поднять текст между тэгами option, если value - занято?
&lt;option value='10074'&gt;Intel Celeron 2000MHz&lt;/option&gt; Мне нужно передать текст в форму. Как?

Как вырезать текст регулярными выражениями между тегами?
Всем привет! Есть некий текст, к примеру: &lt;user default_car='2799' tank='1' gold='1' money='16469' races_lost='162' Цель: научиться...

Как выбрать текст между двумя тегами
Как выбрать текст между двумя тегами


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru