
perlを使って、下記のXMLファイルを出力したいです。
<?xml version='1.0' encoding='UTF-8' ?>
<member>
<No>00001</No>
<Product>
<ProductSeqNo>0</ProductSeqNo>
<ProductName>スマートフォン</ProductName>
</Product>
<Product>
<ProductSeqNo>3</ProductSeqNo>
<ProductName>モニタ</ProductName>
</Product>
<RegistDate>2012/11/29</RegistDate>
</member>
<Product>タグの部分は、編集情報を設定するため、下記のようにプログラミングしています。
my $p = {
member => [
{
No => "$id",
Product => {},
RegistDate => "$RegistDate"
}
]
};
my $AddData = {
Product =>
{
ProductSeqNo => ["$seqno"],
ProductName => ["ProductName"]
}
};
push(@{$p->{member}}, $AddData); # データを追加
my $x = new XML::Simple;
my $xml = $x->XMLout($p, NoAttr=>1, KeepRoot=>1, OutputFile => "$dir/$Details", XMLDecl => "<?xml version='1.0' encoding='UTF-8' ?>");
上記を動かすと、以下のように出力されます。
<?xml version='1.0' encoding='UTF-8' ?>
<member>
<No>00001</No>
<Product></Product>
</member>
<member>
<Product>
<ProductName>ProductName2</ProductName>
<ProductSeqNo>1</ProductSeqNo>
</Product>
</member>
最初のイメージで出力する方法をご存知の方は教えて下さい。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
> push(@{$p->{member}}, $AddData); # データを追加
XML::Simple についてはわかりませんが、上記の push 文を実行後の $p のデータ構造は次のようになります。
$p = {
member => [
{
No => "$id",
Product => {},
RegistDate => "$RegistDate"
},
{
Product =>
{
ProductSeqNo => ["$seqno"],
ProductName => ["ProductName"]
}
}
]
};
必要なのは member が指す配列に要素を追加することではなく、Product が指す値の中にデータを追加する事だと思います。そのためには Product => {} を Product => [] に変更して、その無名配列の中に ProductSeqNo と ProductName を格納したハッシュを追加してはどうでしょうか。
Product => [],
...
push @{$p->{member}->[0]->{Product}}, $AddData->{Product};
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 憲法・法令通則 (⇩)下記の URL にある M&P FPC という銃は、アメリカ国内のどの州でも、民間市場で買える 4 2023/04/23 19:51
- エアガン・モデルガン (⇩)下記の URL にある Heckler & Koch SP5K-PDW For Sale の、 1 2022/09/21 15:08
- その他(パソコン・周辺機器) RBG信号の2分岐についての質問です 3 2022/06/23 19:42
- アプリ Android studio 初心者 Hello Android!しか表示されない 1 2023/08/01 08:47
- ルーター・ネットワーク機器 無線LANルーターについて。 冷蔵庫などの電波で無線LAN接続が妨害される場合は、5GHzで接続した 2 2022/09/28 12:37
- FTTH・光回線 無線LANルーターについて。 冷蔵庫などの電波で無線LAN接続が妨害される場合は、5GHzで接続した 3 2022/09/28 12:40
- その他(プログラミング・Web制作) pythonのプログラムについての質問です。 1 2023/05/26 10:31
- レディース このスカートのグレーに https://m.dholic.co.jp/product/goodvie 1 2022/09/19 15:26
- イヤホン・ヘッドホン・補聴器 イヤホンについて ダイソーのAL-001イヤホンとappleの純正イヤホンどっちの方が音質いいですか 4 2023/02/10 10:46
- ビデオカメラ カメラのグリップハンドルをつけたまま、三脚にクイックシューで取り付けたいのでアドバイス下さい。 1 2023/02/25 02:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列データの並び替えについて。
-
フォルダ内の画像をランダムに...
-
リファレンスについて 1
-
エクセルVBAでTransposeの不思議
-
文字の整列(printf)
-
クラスに配列を渡す方法
-
Dim flag(4) as boolean で配列...
-
perlのsplitでいきなりすぐに配...
-
VB6で配列の最大値を簡単に求め...
-
重複しない乱数発生
-
可変長配列を、動的確保した固...
-
2次元配列内の各配列の任意番目...
-
二次元配列における要素数のは...
-
VBA Dir関数でファイルをループ...
-
範囲指定したセルを1つずつ飛...
-
VBのReturnの使い方
-
UWSCの終了の仕方
-
CSVファイルの特定の行だけを読...
-
VBA for i=1 to lastrow
-
VB6の公式リファレンスはありま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのautofilter、criteriaの配...
-
クラスに配列を渡す方法
-
二次元配列のインデックスについて
-
文字の整列(printf)
-
Dim flag(4) as boolean で配列...
-
マクロ Publicでの配列定義
-
エクセルVBAでTransposeの不思議
-
複数の配列の全ての組み合わせ...
-
Excel VBA ユーザーフォームの...
-
リストボックスに縦スクロール...
-
バイナリデータの検索(VB.NET2008)
-
可変長配列を、動的確保した固...
-
Strawberry Perl for Windows ...
-
perlで配列の要素が空なのを知...
-
if文条件式で配列を使用したい
-
VBScript 配列
-
VBA 二次元配列の1つ目を増...
-
二次元配列における要素数のは...
-
配列の各要素に文字列結合
-
Powershell $変数 = @()の空配...
おすすめ情報