วิธีการอ่าน XML ของ Android Apps
วิธีการวิเคราะห์โหลด XML ใน app Android?
ผมคิดว่าหลายท่านกำลังคิด app ใน app Android, ที่จะทำอะไรเพื่อวิเคราะห์แฟ้ม XML
ตัวอย่างเช่นถ้าที่และต้องการใช้บริการเว็บ API, XML เป็นเทคนิคที่จำเป็นสำหรับการวิเคราะห์
(กับบริการเว็บ API เป็นสิ่งที่ทำให้เรามี Rakuten, Amazon, ฯลฯ เช่นการสรรหาบุคลากรและหลาย บริษัท และนี่คือคำอธิบายของพวกเขาถูกละไว้.)
ดังนั้นผมจะแนะนำขั้นตอนสำหรับการอ่าน XML ใน Android เพื่อการที่ฉันได้ทำ
แรกของทุกทิ้งไว้จะนำเข้าต่อไปนี้สองชั้น
นำเข้า org.xmlpull.v1.XmlPullParser;
นำเข้า android.util.Xml;
แต่ผมคิดว่าถ้าเมื่อคุณใช้ Web Services API และใช้วิธีการด้วยการนำเข้าแฟ้ม XML ในการสื่อสาร HTTP, ว่าเพื่อให้ได้เช่น InputStream, ในรายละเอียดของเวลานี้เรากำลังอ่านเช่น InputStream แฟ้ม XML แล้ว ผมจะสมมติว่า
ดังต่อไปนี้: 1, เพื่อให้ได้ตัวอย่าง XmlPullParser.
xmlPullParser XmlPullParser Xml.newPullParser = ();
XmlPullParser โปรดคิดการเรียนและให้ความสามารถสำหรับคนที่จะไปอ่านองค์ประกอบต่อไปนี้ของ XML
ดังต่อไปนี้: 2, การตั้งค่าไฟล์ InputStream XML ได้รับการโหลดลงใน XmlPullParser.
xmlPullParser.setInput (คือ "UTF-8");
※เป็นอาร์กิวเมนต์แรกคืออาร์กิวเมนต์อินสแตนซ์ที่สอง InputStream โปรดระบุการเข้ารหัสของไฟล์ XML
ดีพร้อมที่จะไปเพื่อวิเคราะห์ XML นี้ขณะนี้พร้อม
พร้อมส่วนที่เหลือที่ต้องการจะทำ แต่ไปอ่านได้ที่นี่เราจะเรียกว่าเราคาดหวังให้อ่านดังนี้
•ในจากจุดเริ่มต้นที่จุดสิ้นสุดของไฟล์ XML เพื่อให้ได้รายชื่อของมูลค่า (Value) ของแท็กชื่อ
"และค่าของแท็กชื่อ" เป็นส่วนหนึ่งของ xxx ต่อไปนี้
<name> xxx </ name>
ขั้นแรกให้ดูที่ตัวอย่างรหัส
String [] = new String [] ();
int เคาน์เตอร์ = 0;
for (int E = xmlPullParser.getEventType ();! E = XmlPullParser.END_DOCUMENT; E = xmlPullParser.next ()) {
ถ้า (จ == xmlPullParser.getName XmlPullParser.START_TAG && (). เท่ากับ ("ชื่อ")) {
[เคาน์เตอร์] = xmlPullParser.nextText ();
เคาน์เตอร์ + +
}
}
ยังไม่ได้เขียนเฉพาะรหัสน้อยที่สุดลักษณะเช่นนี้
xmlPullParser คือเป็นฉันไม่ได้มีทุกองค์ประกอบหรือต่อหนึ่งบรรทัดเราจะอ่านหนึ่งโดยหนึ่งไปจริงๆอย่างระมัดระวังและ XML
ถ้าแท็กเริ่มต้นค่าแท็กสิ้นสุดหากคุณใช้ใด ๆ ของ () เป็นกลไกไปในแท็กเริ่มต้นและจุดสิ้นสุด⇒⇒แท็กค่า XmlPullParser.next
ซึ่งสามารถทำได้โดยทั้งสะดวกหรือไม่สะดวกที่ฉันจะ
ฉันแรกที่ฉันถูกงงงวย
ถ้าคุณมองสำหรับวงและเป็นค่าเริ่มต้น () xmlPullParser.getEventType
ณ จุดนี้ xmlPullParser เพียงเพราะคุณตั้ง InputStream ค่าของ () กลายเป็น "START_DOCUMENT" หมายถึงการเริ่มต้น getEventType
สิ้นสภาพ loop คือจนกว่า "END_DOCUMENT" หมายถึงล่าสุด
องศาของวงและไปในที่จะไปทำงาน () XmlPullParser.next
วนที่เรียกว่า
คุณสามารถจะเป็นผลก็จะถูกกล่าวว่าจะอ่านตั้งแต่ต้นจนถึงจุดสิ้นสุดของไฟล์ XML
ต่อไปนี้เป็นรายละเอียดของที่อยู่ภายในลูป
เงื่อนไขของคำสั่งที่อธิบายในแง่ของการหาก
ใส่เพียงก็หมายความว่า "ถ้ามันเป็นแท็กเริ่มต้นของแท็กชื่อ"
ฉันต้องการ แต่ "ค่า" ที่ล้อมรอบในการเปิดและปิดแท็กชื่อใน "ค่า" ของตัวเองที่ได้กลายเป็นปัจจุบันของ xmlPullParser เป็นค่าถูกนำมาแท็กสำหรับสิ่งที่มันเป็นสถานที่แรก คือสิ่งที่ได้รับการล้อมรอบไปด้วยผมไม่ได้ใช้ (GetName. () ค่ากลับจะกลายเป็นโมฆะ)
โดยดังนั้นเมื่อแท็กเริ่มต้นของแท็กชื่อจะถูกเปิดในปัจจุบันที่ใช้เวลาสตริงขององค์ประกอบต่อไปนี้ในประโยคที่ว่าให้ใช้ () nextText
นี้เป็นวิธีการที่เรียกว่าการดึงองค์ประกอบถัดไปเป็น String
มีวิธีอื่น ๆ เพื่อให้เป็นตัวอย่างที่ดีคือสิ่งที่กล่าวข้างต้นไม่จำเป็นต้องเข้าใจ
ผมได้ทำลวกตามที่อธิบายไว้ข้างต้น
อนึ่งวิธีการค่า แต่แทนที่จะใช้แอตทริบิวต์ของแท็กจากนั้นจึงนำเสนอที่นี่
ตัวอย่างเช่นสมมติของความรู้สึกแบบเดียวกับในข้างต้นในที่สุดก็ว่าจะใช้รายชื่อของแอตทริบิวต์ ID ของแท็กชื่อ
"และแอตทริบิวต์ ID ของแท็กชื่อ" เป็นส่วนหนึ่งของ yyy ต่อไปนี้
<name id=yyy> xxx </ name>
สำหรับ loops ถ้างบเพื่อเดียวกันเพียงเนื้อหาของคำสั่งที่ถ่ายถ้า
สนใจดังต่อไปนี้
[เคาน์เตอร์] = xmlPullParser.getAttributeValue (null, "ชื่อ");
ถ้าคุณได้รับแอตทริบิวต์ใช้ () getAttributeValue ตามที่อธิบายไว้ข้างต้น
อาร์กิวเมนต์แรกระบุชื่อ "" ชื่อแอตทริบิวต์เป็นโมฆะ, อาร์กิวเมนต์ที่สอง
ตามเอกสาร API ทำให้ "namespace" อาร์กิวเมนต์แรกอาร์กิวเมนต์ที่สองคือ "ชื่อ" แอตทริบิวต์
ฉันจะเขียน namespace ถ้าเฉื่อย, อาร์กิวเมนต์แรกคือไม่และจะไม่โมฆะนี้มีให้เป็นโมฆะ
เกี่ยวกับ "namespace XML" ผมเพียงแค่ไม่ได้มีรายละเอียดที่นี่คือคำอธิบายของพวกเขาไม่ได้
ไม่มีไม่ได้ (หัวเราะ)
getAttributeValue () เช่นการใช้อย่างใดอย่างหนึ่งก็ยังให้รูปแบบหนึ่งที่มีอาร์กิวเมนต์ของ int ชนิดอื่น
ตั้งแต่นี้คือการระบุดัชนีหากกรณีนี้เพื่อแทนที่ถ้าคุณเชื่อว่าครั้งแรกหนึ่ง,
[เคาน์เตอร์] = xmlPullParser.getAttributeValue (0);
จะเป็น
ในฐานะที่เป็นตัวห้อยของอาร์เรย์ให้คุณระบุค่าที่ได้โดยการหัก 1 จากจำนวนจริง
และหากแม้เพียงวิธีการเดียวที่นำมาข้างต้นสามารถหาได้ในการวิเคราะห์ของ XML Web Services API











