2015-10-27 2 views
-2

Привет, У меня есть XML-файл, который я хочу удалить с первой строки с помощью Perl и заменить его только одним словом. Не могли бы вы дать мне знать, как можно справиться с этим?Удаление первой строки файла xml в Perl

Фро пример, давайте мы имеем файл XML, который включает в себя несколько строк, как:

<SquishReport version="2.1" xmlns="http://www.froglogic.com/XML2"> 
<test name="test"> 
. 
. 
. 

, который после удаления и добавления нужной строки, я бы:

<SquishReport> 
<test name="test"> 
. 
. 
+2

Вы хотите удалить корневой узел? Это звучит как [проблема XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). Что вы на самом деле пытаетесь достичь? Пожалуйста, дайте несколько (полных) образцов, если XML ввода/вывода. – Sobrique

+0

@Sobrique См. Отредактированную версию – Royeh

+1

Хорошо, я понимаю вопрос немного лучше, и ответил соответственно. Однако я думаю, что это все еще проблема XY - я бы поставил под вопрос, почему вам нужно удалить атрибуты корневого узла? – Sobrique

ответ

3

С XML::Twig:

Заменить «корневой элемент + атрибуты» только «корневым элементом»:

#!/usr/bin/env perl 
use strict; 
use warnings; 

use XML::Twig; 

my $twig = XML::Twig -> parse (\*DATA); 
$twig -> root -> del_atts; 
$twig -> set_pretty_print('indented_a'); 
$twig -> print; 

__DATA__ 
<SquishReport version="2.1" xmlns="http://www.froglogic.com/XML2"> 
<test name="test"> </test> 
</SquishReport> 

Печать:

<SquishReport> 
    <test name="test"> </test> 
</SquishReport> 

Примечание -

$twig -> set_pretty_print('indented_a'); 

Можно изменить содержимое файла - из документации на XML::Twig:

ВНИМАНИЕ: эта опция оставляет документ хорошо сформирован но может сделать его недействительным (не соответствующим его DTD).

Таким образом, выключение довольно печатного, если это проблема будет подходящим выбором.

+1

'$ twig -> set_pretty_print ('indented_a');' может изменять файл. Лучше не использовать его "по умолчанию". – ikegami

+0

'keep_spaces => 1 'в' new' оставит все пробелы нетронутыми (за исключением строк в значениях атрибутов, которые нормализуются синтаксическим анализатором) – mirod

+0

Я еще не опрокинулся, но я исправлю ответ. – Sobrique

Смежные вопросы