2012-11-27 103 views
-2

我想寫一個Perl代碼來替換XML中的標籤的內容。例如。 <A>Hello<A>如何更新XML標籤的內容?

我想在我的XML中搜索標記<A>,然後用「Hi」替換值「Hello」。

我該怎麼做?

+6

Stack Overflow是這裏支持誰已經盡了最大努力,但未能但未能解決規劃問題的程序員。這裏沒有證據表明你已經做出了任何努力。如果你顯示你寫的代碼,我們會盡力幫助你。 – Borodin

回答

0

使用XML::XSH2,包裝周圍XML::LibXML

open file.xml ; 
for //A[text()='Hello'] set text() 'Hi' ; 
save :b ; 
+0

請詳細說明一下。我無法理解這個邏輯。 –

+0

@PrafulMathur:這個答案中的代碼是嵌入的XSH。作者沒有顯示包含它所需的Perl。 IMO這個模塊對於這樣一個簡單的應用來說是矯枉過正的。 – Borodin

+0

@Borodin:你可以自己使用'xsh',而不需要任何嵌入。適用於簡單的應用程序:-) – choroba

2

XML::Twig模塊適用於這一點,因爲它允許您指定解析XML當遇到一個給定的標籤所執行的處理程序。

如果你提供了一些真正的XML數據作爲例子,它會有所幫助,但我已經使用了你的問題的精確度。

use strict; 
use warnings; 

use XML::Twig; 

my $twig = XML::Twig->new(
    twig_handlers => { A => sub { $_->subs_text(qr/Hello/, 'Hi') } }, 
); 

$twig->parse(*DATA); 
$twig->print; 

__DATA__ 
<root> 
I want to replace the content of a tag in XML. e.g. In 
<A>Hello</A> I want to replace the value "Hello" with "Hi". 
</root> 

輸出

<root> 
I want to replace the content of a tag in XML. e.g. In 
<A>Hi</A> I want to replace the value "Hello" with "Hi". 
</root>