Как найти и извлечь определенную строку из XML и заменить в другом документе XML - PullRequest
0 голосов
/ 27 мая 2019

Может кто-нибудь помочь мне, как извлечь определенную строку из XML и заменить в другой XML. Как я хочу извлечь только mediaId из второй строки 1.XML

- <sample_settings_config version="23" mediaId="0x6868"> 

и замените его в документе 2.xml (код обоих XML одинаков, кроме mediaId).

Где, как 1.xml расположение является динамическим (C: \ users \ xxxx \ Documents), поэтому ищу дополнения, найди извлечение и замену. (

Я пытаюсь использовать Python или пакетный скрипт.

борется с этим пакетным скриптом

setlocal EnableDelayedExpansion

(Set UPD=C:\Users)

(Set UDS=\RAP\Documents\MB)

For /F "delims=" %%a in ('findstr /I /L "mediaId" 1.xml') do (
   set "line=%%a"
   set "line=!line:*<string>=!"
   for /F "delims=<" %%b in ("!line!") do echo %%b

но это не работает, любая помощь приветствуется, спасибо.

1 Ответ

0 голосов
/ 28 мая 2019
from xml.etree.ElementTree import ElementTree

tree = ElementTree()

tree.parse("1.xml")
root = tree.getroot()
media_id = root.find('sample_settings_config').attrib['mediaId']

tree.parse("2.xml")
root = tree.getroot()
root.find('sample_settings_config').attrib['mediaId'] = media_id
tree.write('2.xml', xml_declaration=True)

Вы можете использовать xml.etree.ElementTree для чтения и записи в XML, используя Python.

Код импортирует ElementTree, и экземпляр создается как tree.Начиная с tree, файл XML анализируется и получает root.Затем найдите тег sample_settings_config и получите значение атрибута mediaId.

Повторите синтаксический анализ, получите root и найдите тег.Обновите ключ словаря mediaId, указав значение, хранящееся в переменной media_id.Запишите измененное содержимое в файл XML.

1.xml :

<?xml version='1.0' encoding='us-ascii'?>
<root>
  <sample_settings_config version="123" mediaId="0x6868">
    "XML File 1"
  </sample_settings_config>
</root>

2.xml :

<?xml version='1.0' encoding='us-ascii'?>
<root>
  <sample_settings_config version="456" mediaId="0x0">
    "XML File 2"
  </sample_settings_config>
</root>

2.xml, изменено :

<?xml version='1.0' encoding='us-ascii'?>
<root>
  <sample_settings_config mediaId="0x6868" version="456">
    "XML File 2"
  </sample_settings_config>
</root>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...