Hướng Dẫ Chèn Xml Vào Ứng Dụng Android

Thảo luận trong 'Học tập' bởi nuongitq, 26/11/2015.

  1. nuongitq

    nuongitq Thành viên đạt chuẩn

    Tham gia:
    5/8/2014
    Bài viết:
    73
    Đã được thích:
    8
    Điểm thành tích:
    8
    Android cũng cung cấp cho chúng tôi các API để chúng tôi có thể làm việc và các tài liệu quá trình XML trong ứng dụng của chúng tôi một cách dễ dàng và linh hoạt. Trong bài viết học lập trình android này, chúng tôi sẽ xem làm thế nào bạn có thể làm việc hiệu quả với các tài liệu XML trong ứng dụng Android của bạn.

    Các lớp học cho phân tích cú pháp XML trong Android

    Có phân tích cú pháp XML khác nhau chúng ta có thể sử dụng trên nền tảng Android. Đối với XML, Android khuyến cáo việc sử dụng các XmlPullParser. Android cung cấp cho một thực hiện nhiều của XmlPullParser và bạn có thể sử dụng bất kỳ của họ trong chương trình của bạn. Tùy thuộc vào cách bạn tạo XmlPullParser của bạn, việc thực hiện các phân tích cú pháp sẽ được chọn.

    Instantiating phân tích cú pháp của bạn

    Như đã nêu ở trên, có nhiều cách trong Android, bạn có thể tạo ra một XmlPullParser. Cách đầu tiên để làm điều đó là sử dụng lớp Xml như hình dưới đây:

    Code:
    XmlPullParser phân tích cú pháp = Xml.newPullParser ();
    Bạn có phải chỉ cần gọi newPullParser đó sẽ trả lại cho bạn một tài liệu tham khảo để phân tích cú pháp XMLPull. Hoặc bạn có thể nhận được một tài liệu tham khảo từ các XmlPullParserFactory như hình dưới đây.

    Code:
    XmlPullParserFactory pullParserFactory;[/SIZE][/COLOR][/FONT]
    [SIZE=4][FONT=Georgia][COLOR=rgb(46, 46, 46)]        try {
                pullParserFactory = XmlPullParserFactory.newInstance();
                XmlPullParser parser = pullParserFactory.newPullParser();
            } catch (XmlPullParserException e) {
    
                e.printStackTrace();
            }


    Phân tích cú pháp XML

    Một khi chúng ta có những tài liệu tham khảo phân tích cú pháp bây giờ là lúc để sử dụng nó để phân tích một XML. Chúng tôi sẽ sử dụng XML sau đây như là XML để phân tích. Vì vậy, bây giờ tạo một tập tin gọi là temp.xml trong thư mục tài sản của bạn với nội dung:

    Code:
    <?xml version="1.0" encoding="UTF-8"?>[/SIZE][/COLOR][/FONT]
    [SIZE=4][FONT=Georgia][COLOR=rgb(46, 46, 46)]<products>
        <product> 
            <productname>Jeans</productname>
            <productcolor>red</productcolor>
            <productquantity>5</productquantity>
        </product>
        <product> 
            <productname>Tshirt</productname>
            <productcolor>blue</productcolor>
            <productquantity>3</productquantity>
        </product>
        <product> 
            <productname>shorts</productname>
            <productcolor>green</productcolor>
            <productquantity>4</productquantity>
        </product>
    </products>


    Các mã của hoạt động này để đọc và phân tích cú pháp như sau:

    Code:
    class Product[/SIZE][/COLOR][/FONT]
    [SIZE=4][FONT=Georgia][COLOR=rgb(46, 46, 46)]{
    
        public String name;
        public String quantity;
        public String color;
    
    }
    public class XMLDemo extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
    
            XmlPullParserFactory pullParserFactory;
            try {
                pullParserFactory = XmlPullParserFactory.newInstance();
                XmlPullParser parser = pullParserFactory.newPullParser();
    
                   InputStream in_s = getApplicationContext().getAssets().open("temp.xml");
                   parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
                   parser.setInput(in_s, null);
    
                   parseXML(parser);
    
            } catch (XmlPullParserException e) {
    
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
        }
    
        private void parseXML(XmlPullParser parser) throws XmlPullParserException,IOException
        {
            ArrayList<product> products = null;
            int eventType = parser.getEventType();
            Product currentProduct = null;
    
            while (eventType != XmlPullParser.END_DOCUMENT){
                String name = null;
                switch (eventType){
                    case XmlPullParser.START_DOCUMENT:
                        products = new ArrayList();
                        break;
                    case XmlPullParser.START_TAG:
                        name = parser.getName();
                        if (name == "product"){
                            currentProduct = new Product();
                        } else if (currentProduct != null){
                            if (name == "productname"){
                                currentProduct.name = parser.nextText();
                            } else if (name == "productcolor"){
                                currentProduct.color = parser.nextText();
                            } else if (name == "productquantity"){
                                currentProduct.quantity= parser.nextText();
                            }
                        }
                        break;
                    case XmlPullParser.END_TAG:
                        name = parser.getName();
                        if (name.equalsIgnoreCase("product") && currentProduct != null){
                            products.add(currentProduct);
                        }
                }
                eventType = parser.next();
            }
    
            printProducts(products);
        }
    
        private void printProducts(ArrayList</product><product> products)
        {
            String content = "";
            Iterator</product><product> it = products.iterator();
            while(it.hasNext())
            {
                Product currProduct  = it.next();
                content = content + "nnnProduct :" +  currProduct.name + "n";
                content = content + "Quantity :" +  currProduct.quantity + "n";
                content = content + "Color :" +  currProduct.color + "n";
    
            }
    
            TextView display = (TextView)findViewById(R.id.info);
            display.setText(content);
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
    
    }


    Trong đoạn mã trên, chúng tôi đã tạo ra một lớp học nhỏ được gọi là sản phẩm trong đó có ba thành viên: tên, số lượng, màu sắc. Trong hoạt động này, chúng tôi lần đầu tiên được dụ XmlPullParser sau đó chúng tôi mở temp.xml như một inputstream. Khi đã xong, chúng tôi thiết lập các inputstream làm đầu vào cho phân tích cú pháp. Sau đó, chúng ta phân tách xml trong chức năng parseXML của chúng tôi. Trong chức năng parseXML chúng ta tạo ra một ArrayList trong đó chúng ta sẽ lưu trữ tất cả các sản phẩm mà chúng tôi sẽ phân tích từ XML. Khi đã xong, chúng tôi tạo ra một vòng lặp đó sẽ làm việc cho đến khi kết thúc tài liệu là đạt khi lập trình android .

    Vào lúc bắt đầu của tài liệu chúng tôi tạo ra các sản phẩm ArrayList. Nếu một thẻ bắt đầu và nếu thẻ được sản phẩm, chúng tôi biết rằng bây giờ nó là một sản phẩm mới nên chúng tôi tạo ra một trường hợp sản phẩm mới. Sau đó, nếu các thẻ khác được đọc, chúng tôi sẽ chỉ đọc và thêm các giá trị trong trường hợp sản phẩm của chúng tôi. Một khi sản phẩm được tag kết thúc, chúng tôi thêm sản phẩm vào ArrayList. Một khi tất cả các sản phẩm được thêm vào chúng ta gọi là printProducts chức năng mà chúng ta lặp qua các ArrayList và sau đó in các giá trị trên màn hình.

    Nếu chúng ta chạy hoạt động bây giờ chúng ta sẽ thấy kết quả như sau:

    Android XMLDemo hiển thị

    Phân tích cú pháp khác được sử dụng cho XML

    [​IMG]

    Có phân tích cú pháp khác cũng có thể được sử dụng để phân tích cú pháp XML trong Android. Các phân tích DOM có thể được sử dụng mà tạo ra một mô hình bộ nhớ hoàn chỉnh của XML và có thể được sử dụng để tạo ra một trong hai hoặc phân tích cú pháp XML. Phân tích cú pháp DOM thường tiêu tốn rất nhiều bộ nhớ.

    Bạn có thể lấy ví dụ của một DOMBuilder như hình dưới đây


    Code:
    try {[/SIZE][/COLOR][/FONT]
    [SIZE=4][FONT=Georgia][COLOR=rgb(46, 46, 46)]            DocumentBuilderFactory DOMfactory = DocumentBuilderFactory.newInstance();
                DocumentBuilder DOMbuilder = DOMfactory.newDocumentBuilder();
    
            } catch (ParserConfigurationException e) {
    
                e.printStackTrace();
            }



    SAX Parsers

    Các SAXParsers cũng có thể được sử dụng để phân tích cú pháp XML và tiêu thụ bộ nhớ thấp hơn rất nhiều sau đó phân tích cú pháp DOM. Các SAXParsers có thể chỉ được sử dụng để phân tích XMLs không để tạo ra chúng. Bạn có thể nhận được các tài liệu tham khảo của một SAXParser như hình dưới đây:

    Code:
    SAXParserFactory SAXfactory = SAXParserFactory.newInstance();[/SIZE][/COLOR][/FONT]
    [SIZE=4][FONT=Georgia][COLOR=rgb(46, 46, 46)]        try {
                SAXParser SAXParserObj = SAXfactory.newSAXParser();
    
            } catch (Exception e) {
                e.printStackTrace();
            }


    Lời kết

    Tài liệu XML đang trở thành một cách tiêu chuẩn để trao đổi dữ liệu giữa các ứng dụng trên internet. Với các ứng dụng Android của chúng tôi trở nên thông minh hơn và thông minh hơn nó có thể là cần thiết cho các ứng dụng Android của bạn để giao tiếp và trao đổi dữ liệu giữa các ứng dụng khác nhau trên internet. Android cung cấp một tập hợp phong phú các API để làm việc với các tài liệu XML trong ứng dụng Android của bạn.

    Với sự giúp đỡ của các API này bạn có thể dễ dàng kết hợp XML vào ứng dụng Android của bạn. Các phân tích cú pháp XML làm công việc tẻ nhạt của phân tích XML và chúng ta phải chỉ cần viết code để lấy các thông tin thích hợp từ nó và lưu nó để chế biến tiếp.

    Xem thêm:>> Khóa học photoshop cơ bản nâng cao tại VietPro!
     

    Xem thêm các chủ đề tạo bởi nuongitq
    Đang tải...


  2. pvdangquang

    pvdangquang Bắt đầu tích cực

    Tham gia:
    20/8/2014
    Bài viết:
    313
    Đã được thích:
    53
    Điểm thành tích:
    28
    Không nhầm xml dùng để đồng bộ các ngôn ngữ lt khác lại với nhau.
     

Chia sẻ trang này