อยากให้ช่วยแนะนำการดึง Attribute จากอเมซอนด้วยครับ...
ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา อยากให้ช่วยแนะนำการดึง Attribute จากอเมซอนด้วยครับ...
ผมกำลังศึกษาการฟีดสินค้าจาก amazon ผมได้โค้ด xml แบบนี้มา โหลดที่ http://share.aewhasisaket.com/sample.xml ครับ (ก้อบไฟล์ตัวอย่างมาให้) ที่ส่วนที่เป็น <ItemAttributes> ของสินค้าแต่ละตัวจะแตกต่างกันตามหมวด อิเล็กทรอนิก เสื้อผ้า ก็จะมี Attribute คนละแบบ เราจะทำยังไงดีครับให้สคริปรู้ชื่อAtribute นั้นเองและแสดงออกมาแบบอัติโนมัติครับ อยากให้อาจารย์ช่วยชี้แนะด้วยครับ ขอบคุณมากครับ
ที่ต้องการดึงออกมา
BatteriesIncluded -> 1
Binding -> Electronics
Brand -> Samsung

คำแนะนำ และการใช้งาน
สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก
- ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
ปล. อยากให้แนะนำด้วย PHP ครับ

ตามบทความด้านล่าง สามารถนำไปใช้กับ xml ไฟล์ต่างๆ รวมทั้งไฟล์ xml ประเภท rss ได้
https://www.ninenik.com/ดึงค่า_ข้อมูล_จาก_xml_ไฟล์_มากำหนดเป็นตัวแปร_array_ด้วย_php-281.html

ขอบคุณมากครับอาจารย์ แต่ว่าแทกภายใน <ItemAtributes> <x>... </x> <y>... </y> </ItemAttrubutes> เนี่ยครับเป็นปัญหาครับ เพราะว่าสินค้าแต่ละตัวจะเป็นคนละแบบครับเช่น หมวด electronic จะมี BatteriesIncluded, CPU, Hardisk แต่หมวดเสื้อผ้าไม่มีจะมีพวกสำหรับ Men, Women อะไรแบบนี้ครับ ซึ่งถ้าเราต้องการให้ดึงออกมาโดยไม่ต้องกำหนด BatteriesIncluded ล่วงหน้า (โดยให้เป็นอะไรก็ได้ที่ xml ให้เรามา) จะได้มั๊ยครับ
echo $arrXml['Items']['Item'][0]['ItemAttributes']['BatteriesIncluded']; <-- ไม่ต้องกำหนดก่อนได้มั๊ยครับ
ขอบคุณล่วงหน้าครับ

ไม่ค่อยเข้าใจคำถามที่ถามเพิ่ม
แต่ให้เข้าใจว่าตัวแปร array จะถูกสร้างตามเงื่อนไขของโครงสร้าง xml นั้นๆ อย่างเช่น
1 | echo $arrXml [ 'Items' ][ 'Item' ][0][ 'ItemAttributes' ][ 'BatteriesIncluded' ]; |
คือการเอาค่าของ BatteriesIncluded ที่อยู่ใน ItemAttributes ที่อยู่ใน Item[0] คือ Item ตัวแรก และที่อยู่ใน Items มาแสดง
ดังนั้น ค่า BatteriesIncluded , ItemAttributes ... สามารถเป็นอะไรก็ได้ ตามที่ต้องการ และตรงตามโครงสร้างของ xml นั้น

ครับ ผมอาจจะสื่อสารไม่ดี แต่พยายามจะถามอาจารย์ว่า ในโค้ด
echo $arrXml['Items']['Item'][0]['ItemAttributes']['BatteriesIncluded'];
ในสินค้าตัวอื่นมันจะมี ItemAttributes แตกต่างกันออกไปครับ เช่น หมวดอิเล้กทรอนิกในแทกนี้จะเป็น BatteriesIncluded ถ้าเป็นหมวดเสื้อผ้ามันจะไม่มี BatteriesIncluded แต่เป็น color หรือ เพศของผู้ใส่แทน หรือ ถ้าเป็นสินค้าพวกหนังสือ ในแทก ItemAttributes นี้อาจจะเป็น ชื่อผู้แต่ง ถ้าเป็นหมวดของเล่น ItemAttributes ก็จะมีอายุผู้เล่นแทน ซึ่งสินค้าคนละหมวดมันจะมี ItemAttributes คนละชนิดกัน เลยอยากทราบว่าจะเขียนโปรแกรมยังไงดีครับ ให้ครอบคลุมทั้งหมด (คงเข้าใจคำถามนะครับ)
ขอบคุณมากครับที่กรุณามาตอบคำถาม หวังว่าคงมีประโยชน์กับคนอื่น ๆ ด้วยนะครับ

ตัวโปรแกรมที่ให้ น่าจะครอบคลุมแล้ว ต้องดูว่าเราต้องการแสดงผลยังไงมากกว่า
ถ้าหมวด electronic มี BatteriesIncluded
1 | echo $arrXml [ 'Items' ][ 'Item' ][0][ 'ItemAttributes' ][ 'BatteriesIncluded' ]; |
แต่ถ้าเป็นหมวด เสื้อผ้า มี color
1 | echo $arrXml [ 'Items' ][ 'Item' ][0][ 'ItemAttributes' ][ 'color' ]; |
ขึ้นอยู่กับไฟล์ xml นั้น
ถ้าสินค้าตัวอื่นมันจะมี ItemAttributes แตกต่างกัน ก็ให้ใช้ตาม ItemAttributes ของหมวดนั้นๆ
พอไปอ่านที่คำถามแรก เจอคำถามที่ว่า "เราจะทำยังไงดีครับให้สคริปรู้ชื่อAtribute นั้นเองและแสดงออกมาแบบอัติโนมัติครับ" สามารถรู้ชื่อ หรือนำค่ามาแสดง
1 2 3 4 | foreach ( $arrXml [ 'Items' ][ 'Item' ][0][ 'ItemAttributes' ] as $key => $value ){ echo $key . "->" . $value ; echo "<br />" ; } |
จากโค้ดด้านบน สามารถหา Atribute และ ค่าของมัน ตัวแปร $key จะเก็บ attribute และ $value เก็บค่า
ไม่รู้ว่าเข้าใจหรือป่าว แต่รู้สึกว่าสิ่งที่กำลังทำ ดูค่อนข้างซับซ้อน และยาก

ขอบคุณมากครับ อาจารย์เข้าใจถูกต้องและตอบได้ตามที่อยากถามเลยครับ ความรู้ผมยังไม่กระจ่างเรื่อง xml เท่าไหร่ ต้องศึกษาอีกเยอะครับ สำหรับ php ผมจะ parse ออกมาแล้วก็วนลูบด้วย for each ครับ (อันนี้ก็ดัดแปลงของต้นฉบับเขามา) ก็ทำได้ระดับหนึ่งครับ อยากให้อาจารย์ช่วยแนะนำหน่อยครับ ว่าถ้าผมจะศึกษาเกี่ยวกับ xml เพิ่ม ควรศึกษาเพิ่มเติมจากที่ไหนดีครับ ขอบคุณมากครับ
ปล. ผมตั้งใจจะทำ Affliate กับ amazon.com ครับ ปกติมีสคริปที่เขาดึงข้อมูลสินค้าจากอเมซอนได้ (แต่เสียเงิน) ผมเลยอยากจะทำเวบเองครับ
