تحليل عناصر وسمات XML باستخدام لغة Perl
-
09-06-2019 - |
سؤال
لذلك كتبت بعض لغة 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}
لا تنتمي إلى StackOverflow