Как отформатировать структуру XML для всех файлов в пути ⇐ Python
Как отформатировать структуру XML для всех файлов в пути
Я хотел бы преобразовать этот XML:
? ? ? ? ? ? ? кому:
? ? ? ? ? ? По сути удалите первые 8 строк и последние 2 строки. Удалите все прокомментированные узлы и добавьте атрибуты xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" и xmlns:bsvc="urn:com.workday /bsvc" в первый узел/корневой узел.
Я попробовал этот код, но столкнулся с проблемами с префиксом.
импортировать ОС импортировать xml.etree.ElementTree как ET # Укажите путь к каталогу, в котором расположены ваши XML-файлы путь_каталога = '/Пользователи/Путь_к файлу/' # Определите сопоставления пространств имен пространства имен = { 'soapenv': 'http://schemas.xmlsoap.org/soap/envelope/', 'bsvc': 'urn:com.workday/bsvc' } # Перебираем XML-файлы в каталоге и обрабатываем их для имени файла в os.listdir(directory_path): если имя_файла.endswith('.xml'): # Создаём полный путь к файлу путь_файла = os.path.join(путь_каталога, имя файла) # Читаем содержимое XML из файла с open(file_path, 'r') как файлом: xml_lines = file.readlines() # Удаляем первые 8 строк и последние 2 строки модифицированные_линии = xml_lines[8:-2] # Объединяем измененные строки обратно в строку модифицированный_xml = ''.join(modified_lines) # Создайте новый корневой элемент с объявлениями пространства имен root = ET.Element('{http://schemas.xmlsoap.org/soap/envelope/}Конверт', nsmap=namespaces) # Разбираем измененное содержимое XML и добавляем его в новый корень модифицированный_корень = ET.fromstring(modified_xml) root.extend(modified_root) # Удалить все прокомментированные узлы для элемента в root.iter(): для ребенка в элементе: если child.tag == ET.Comment: элем.удалить(дочерний) # Конвертируем измененный XML обратно в строку модифицированный_xml = ET.tostring(корень, кодировка='utf8').decode() # Перезаписать исходный файл измененным содержимым с open(file_path, 'w') как файлом: file.write(modified_xml) print(f"Обработано и перезаписано: {file_path}")
Я хотел бы преобразовать этот XML:
? ? ? ? ? ? ? кому:
? ? ? ? ? ? По сути удалите первые 8 строк и последние 2 строки. Удалите все прокомментированные узлы и добавьте атрибуты xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" и xmlns:bsvc="urn:com.workday /bsvc" в первый узел/корневой узел.
Я попробовал этот код, но столкнулся с проблемами с префиксом.
импортировать ОС импортировать xml.etree.ElementTree как ET # Укажите путь к каталогу, в котором расположены ваши XML-файлы путь_каталога = '/Пользователи/Путь_к файлу/' # Определите сопоставления пространств имен пространства имен = { 'soapenv': 'http://schemas.xmlsoap.org/soap/envelope/', 'bsvc': 'urn:com.workday/bsvc' } # Перебираем XML-файлы в каталоге и обрабатываем их для имени файла в os.listdir(directory_path): если имя_файла.endswith('.xml'): # Создаём полный путь к файлу путь_файла = os.path.join(путь_каталога, имя файла) # Читаем содержимое XML из файла с open(file_path, 'r') как файлом: xml_lines = file.readlines() # Удаляем первые 8 строк и последние 2 строки модифицированные_линии = xml_lines[8:-2] # Объединяем измененные строки обратно в строку модифицированный_xml = ''.join(modified_lines) # Создайте новый корневой элемент с объявлениями пространства имен root = ET.Element('{http://schemas.xmlsoap.org/soap/envelope/}Конверт', nsmap=namespaces) # Разбираем измененное содержимое XML и добавляем его в новый корень модифицированный_корень = ET.fromstring(modified_xml) root.extend(modified_root) # Удалить все прокомментированные узлы для элемента в root.iter(): для ребенка в элементе: если child.tag == ET.Comment: элем.удалить(дочерний) # Конвертируем измененный XML обратно в строку модифицированный_xml = ET.tostring(корень, кодировка='utf8').decode() # Перезаписать исходный файл измененным содержимым с open(file_path, 'w') как файлом: file.write(modified_xml) print(f"Обработано и перезаписано: {file_path}")
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение