我有一個XML字串,格式如下,我需要在決議之前對其進行整理,否則就會出現 "Input is not proper UTF-8; indicate encoding "的錯誤:
span class="hljs-keyword">my $xml_parsed_mess = XML::LibXML->new() -> parse_string($xml_mess) 。
字串如下:
my $xml_mess = "< ? xml version="1.0" encoding="UTF-8" ? ><訊息><tag1>???????test123</tag1><tag2>網路test網路</tag2> ??<tag3>我是干凈的</tag3><tag4>不要擔心我</tag4></message></xml>"
我不想把整個字串轉換為UTF-8,但我想做的是清理字串中的特定標簽,例如在這個例子中:
<tag1>???????test123</tag1> -> < tag1> test123< /tag1>
我知道這樣做的命令是:
。$xml_mess =~ s/[[:^ascii:]] /g;
但我如何針對特定欄位的內容,如<tag1>??</tag1>, <tag2>????</tag2>/code>.
我知道我可以按如下方式改變內容:
$xml_mess =~ s|<tag1>test</tag1> |<tag1> testing< /tag1>。
但是我如何針對標簽的內容運行這個命令 $xml_mess =~ s/[[:^ascii:]] /g;而不是替換內容 - 隨后更新$xml_mess.
uj5u.com熱心網友回復:
use 5.014。
使用警告。
use XML::LibXML qw( );
my $doc = XML::LibXML->new->parse_file("a.xml"/span>)。
for my $text_node ($doc-> findnodes("/message/tag1/text()") {
$text_node->setData(
$text_node->getData() =~ s/[[:^ascii:]] /rg.
);
}
print $doc->toString;
<?xml version="1.0" encoding="UTF-8"? ><message>< tag1>???????test123< /tag1><tag2>網路測驗網路</tag2> <tag3>i am clean</tag3><>。 tag4>不要擔心我</tag4></message>
它產生
<? xml version="1.0" encoding="UTF-8"? ><message><tag1>test123< tag1><tag2>網路test網路</tag2> <tag3>i am clean</tag3><><。 tag4>不要擔心我</tag4></message>
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/311372.html
標籤:
