سؤال

لذلك كتبت بعض لغة Perl التي من شأنها تحليل النتائج التي تم إرجاعها من ملف خدمات الويب الأمازون.أنا أستخدم XML::Simple طَرد.بالنسبة للجزء الأكبر، كل شيء يعمل عندما قمت بسحب عنصر.ومع ذلك، كانت المشكلة التي واجهتها هي عندما يكون للعنصر سمة أيضًا.ثم تظهر لي رسالة خطأ مفادها أن العنصر عبارة عن تجزئة.

إليك ما فعلته إذا أردت الحصول على وقت التشغيل لقرص DVD:لقد قمت للتو بإنشاء عنصر للاحتفاظ بالمعلومات المحددة لهذا العنصر لمرة واحدة.

// XML
<ProductGroup>DVD</ProductGroup>
<RunningTime Units="minutes">90</RunningTime>

// Perl to parse XML

my $item = $xml->XMLin($content, KeyAttr => { Item => 'ASIN'}, ForceArray => ['ASIN']);    

$ProductGroup = $item->{Items}->{Item}->{ItemAttributes}->{ProductGroup};

if(ref($item->{Items}->{Item}->{ItemAttributes}->{RunningTime}) eq 'HASH'){
    $RunningTimeXML = $xml->XMLin($content, KeyAttr => { Item => 'ASIN'}, NoAttr => 1);
    $RunningTime = $RunningTimeXML->{Items}->{Item}->{ItemAttributes}->{RunningTime};
}

هل هناك طريقة يمكنني من خلالها الوصول إلى كل من العناصر والسمات من عنصر واحد؟

هل كانت مفيدة؟

المحلول

$item هو هاشر يبدو كالتالي:

$item = {
    'RunningTime'  => {'content' => '90', 'Units' => 'minutes'},
    'ProductGroup' => 'DVD'
};

لذلك يمكنك الحصول على وقت التشغيل مثل هذا:

$RunningTime = $item->{RunningTime}->{content}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top