状況: 現在、XML::LibXML を使用して XML からデータを抽出しています。これを XML 要素の Xpath と組み合わせると、XML のほとんどの値を読み取って置き換えることができます。ただし、XML の最初のタグにある特定のデータにアクセスできないようです。これはかなり重要なフィールドですが、いくつかの方法を試しましたが、まだそのフィールドを操作できません。
XML ファイル:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<test **date_time="201111031006"** xsi:noNamespaceSchemaLocation="test.xsd">
<msg_ver>0001</msg_ver>
<sender_id>john</sender_id>
<recipient_id>mike</recipient_id>
</test>
date_time フィールド (太字) にアクセスしようとしていますが、アクセスできないようです。XPathをコピーして試してみましたが、うまくいきません。実際にフィールドなどを変更することはできますが、date_time フィールドを変更することはできません。フィールドを変更するどころか、フィールドからデータを抽出することさえできません。同じ関数を使用して、フィールド 、および への変更を読み取り、抽出して保存できます。
マイコード
sub CHANGE_DATE()
{
my $parser = XML::LibXML->new();
my $doc = $parser->parse_file($newfile);
my $query = "/tradenet/@date_time"; ## this is the actual XPATH
my($node) = $doc->findnodes($query);
$node->setData("$date");
$doc->toFile($newfile);
ご覧いただきありがとうございます。