Замена текста между тегов
Здравствуйте,
имеется xml файл с примерной структурой
Код:
<?xml version="1.0" encoding="UTF-8"?>
<user>
<string name="u_name">Vasilii Terkin</string>
<string name="u_vozrast">24565</string>
<string name="u_foto">local.jpg</string>
</user>
в файле всё может измениться, но
Код:
<string name="u_name">%USERNAME%</string>
останется неизменным.
Подскажите как заменить текст между тегами выше
еслиб были регулярки то чтото вроде
Код:
#<string name="u_name">(.*)</string>#iU
|
vano42, если:
Цитата:
Цитата vano42
в файле всё может измениться, »
|
используйте XML DOM: DOM Reference, а не регулярные выражения.
|
Цитата:
Цитата Iska
используйте XML DOM: DOM Reference, а не регулярные выражения. »
|
как требуемую задачу на нём сделать в .bat мне ещё более не понятно(
|
vano42, я правильно понимаю, вам нужно найти определённый тэг (<string name="u_name">) и заменить только его содержимое, оставив содержимое других тэгов неизменным, так? В принципе, grep-ом это решаемо.
|
vano42, внешнюю утилиту grep можно взять здесь.
Код:
@Echo Off
SetLocal EnableDelayedExpansion
Set File=file.txt
Set Out=file2.txt
Set NewValue=TestName123
:: Определяем номер строки с искомым тэгом
For /F "delims=:" %%A In ('grep -En "<string name=.u_name.>[^<]*</string>" "%File%"') Do (
Set Offset=%%A
)
:: Разбираем файл построчно
For /F "usebackq delims=" %%A In ("%File%") Do (
Set /A i+=1
rem Пишем всё, что не является искомой строкой в другой файл
If Not !i!==%Offset% (
Echo %%A
) Else (
For /F "tokens=1,2,3,4 delims=<>" %%A In ('grep -E "<string name=.u_name.>[^<]*</string>" "%File%"') Do (
rem Проверка на отступ перед тэгом, замена значения
Echo.%%A|Find "string">nul&&(
Echo ^<%%A^>%NewValue%^<%%C^>
)||(
Echo %%A^<%%B^>%NewValue%^<%%D^>
)
)
)
)>>"%Out%"
Pause
|
Время: 18:09.
© OSzone.net 2001-