前提:私はC ++から来ており、Perlにはかなり慣れていません。特定のファイルにスタイルシート宣言を追加しようとしてい.xml
ます。.xml
ファイルは3番目の部分によって作成され、脇にダウンロードされます。XMLの正確性や整形式性に疑問を投げかけることはありません。また、ファイル内のXMLがインデントされているのか1行であるのかもわかりません。
Perlだけではファイルをきちんと操作できないので、XML :: LibXMLを使用しましたが、それでも行き詰まります。これは私がこれまでに行ったことです。
#!/usr/bin/perl
use strict;
use warnings;
use XML::LibXML;
my $path = './file.xml';
my $fxml = XML::LibXML::Document->new('1.0','utf-8');
my $pi = $fxml->createPI("xml-stylesheet");
$pi->setData(type=>'text/xsl', href=>'trasf.xsl');
$fxml->appendChild($pi);
$XML::LibXML::skipXMLDeclaration = 1;
my $docwodecl = XML::LibXML::Document->new;
$docwodecl = $doc->toString;
open my $out_fh, '>', $path;
print {$out_fh} $final_xml.$docwodecl;
close $out_fh;
これにより、最初の宣言なしでXMLを取得するだけ<?xml version="1.0" encoding="ISO-8859-1"?>
で、utf-8文字がすべて台無しになります。私はこのようなものを使おうとしました
$fxml->setDocumentElement($doc);
$fxml->toFile($path);
しかし、それは機能しません。私の(結局のところ非常に単純な)目標を達成するために使用できるいくつかの方法がありますか?ドキュメントを調べましたが、役立つものが見つかりません。
編集
スタイルシートの宣言は<?xml version="1.0" encoding="UTF-8"?>
、実際のXMLの後および前に行う必要があります。