Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.72/25: Рейтинг темы: голосов - 25, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 10.04.2015
Сообщений: 11

Найти каждое заданное значение в XML-файле, преобразовать его и заменить результатом преобразования

27.01.2016, 21:41. Показов 5052. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем здрасте!

Есть
XML
1
2
3
4
5
6
7
8
9
10
11
12
<Head>
 <Logic>
    <variable name>1</variable>
    <variable name mask>23556</variable>
    <body>265.35</body>
 </Logic>
 <Logic>
    <variable name>3</variable>
    <variable name mask>null</variable>
    <body>2.56</body>
 </Logic>
</Head>

Мне необходимо значение между всеми <body> умножить на 1000. То есть поменять разрядность.
Зарание спасибо!!!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.01.2016, 21:41
Ответы с готовыми решениями:

Ввести файл. Каждый четный элемент в файле заменить результатом его целочисленного деления на 5. Файл вывести до и после преобразования
Доброго времени суток, форумчане! Код написал. Не работает. выдает один и тот же файл до преобразования и после. в чем моя ошибка?...

Обработка элементов файла.Каждый отрицательный элемент в файле заменить результатом его целочисленного деления на 3
Ввести файл F. Каждый отрицательный элемент в файле заменить результатом его целочисленного деления на 3. Файл вывести до и после...

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

21
 Аватар для KDE777
1887 / 1109 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
29.01.2016, 22:30
Студворк — интернет-сервис помощи студентам
Ну и что бы совсем добить тему - производим указанную замену не использую System.Xml.XmlDocument

Поиск в текстовом файле + регулярное выражение + замена (на PS 2.0 работает ):

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$In = [System.IO.File]::OpenText('c:\xml\doc.xml')
$Out = [System.IO.StreamWriter]'c:\xml\doc1.xml'
 
while (!$In.EndOfStream)
{
$str = $In.ReadLine()
if ($str -match 'petrolWeight')
    {
    $DataOld = $str -replace "[^0-9.]"
    $DataNew = [double]$DataOld * 1000
    $Out.WriteLine($str.Replace($DataOld,$DataNew.ToString()))
    }
else {$Out.WriteLine($str)}
}
 
$In.Close()
$Out.Close()
Добавлено через 1 час 17 минут
Пример из #21 сообщения, при обработке данного файла "ломает" русские буквы в выходном xml-документе

Вот исправленная версия

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
$Out = New-Object System.IO.StreamWriter('c:\xml\doc1.xml',"True",[System.Text.Encoding]::Default)
 
foreach($str in [System.IO.File]::ReadLines('c:\xml\doc.xml',[Text.Encoding]::Default))
{
if ($str -match 'petrolWeight')
    {
    $DataOld = $str -replace "[^0-9.]"
    $DataNew = [double]$DataOld * 1000
    $str = $str.Replace($DataOld,$DataNew.ToString())
    }
$Out.WriteLine($Str)
}
$Out.Close()
Добавлено через 7 минут
Проверяем:

PowerShell
1
Compare-Object (gc C:\xml\doc.xml) (gc C:\xml\doc1.xml) | ft -a
Всё точно, как в аптеке:

InputObject SideIndicator
----------- -------------
<petrolWeight>3078219</petrolWeight> =>
<petrolWeight>784286</petrolWeight> =>
<petrolWeight>586564</petrolWeight> =>
<petrolWeight>21860</petrolWeight> =>
<petrolWeight>3078.219</petrolWeight> <=
<petrolWeight>784.286</petrolWeight> <=
<petrolWeight>586.564</petrolWeight> <=
<petrolWeight>21.86</petrolWeight> <=
0
Эксперт Python
5439 / 3860 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
29.01.2016, 23:40
PowerShell
1
2
3
4
5
$path="$pwd\doc.xml"
$text = [IO.File]::ReadAllText($path,[Text.Encoding]::Default)
[regex]::replace($text,
    '(?<=<petrolWeight>)([.\d]+)(?=</petrolWeight>)',
        {[double]$args[0].Value*1000}) |out-file $path -enc default
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.01.2016, 23:40

Если x, y отрицательные, то каждое значение заменить его модулем
Дано действительные числа x, y. Если x, y отрицательные, то каждое значение заменить его модулем; если от отрицательное только одно число,...

Если x, y отрицательны, то каждое значение заменить его модулем
помогите не могу написать код... напишите программу пожалуйста... Даны действительные числа x, y. Если x, y отрицательны, то каждое...

Если x, y отрицательны, то каждое значение заменить его модулем
Даны действительные числа x, y. Если x, y отрицательны, то каждое значение заменить его модулем; если отрицательное только одно из них, то...

Если х, у — отрицательны, то каждое значение заменить его модулем
Даны действительные числа х и у. Если х, у - отрицательны, то каждое значение заменить его модулем; если отрицательно хотя бы одно из них,...

Если x, y отрицательны, то каждое значение заменить его модулем
Даны действительные числа x, y. Если x, y отрицательны, то каждое значение заменить его модулем; если отрицательное только одно из них, то...


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

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru