12-15-2015, 09:17 AM
Tuy nhiên, các ứng dụng mà giao tiếp ứng dụng của bạn có thể không được phát triển bằng cách sử dụng công nghệ tương tự như của bạn. Cho trao đổi dữ liệu thông suốt giữa các ứng dụng của bạn và một số ứng dụng khác mà bạn có thể trao đổi dữ liệu trong một định dạng mở như ngôn ngữ đánh dấu mở rộng hoặc XML trong lập trình android .
Một tài liệu XML là một tài liệu văn bản có thể đọc được con người có chứa một số bắt đầu và kết thúc thẻ với các thuộc tính và dữ liệu trong các thẻ. Hầu hết các ngôn ngữ và các nền tảng có hỗ trợ cho việc phân tích và tạo ra các tài liệu XML trong họ. 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 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 parser = 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;
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"?>
<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
{
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.
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:
![[Image: image002.jpg]](http://dab1nmslvvntp.cloudfront.net/wp-content/uploads/2013/06/image002.jpg)
Phân tích cú pháp khác được sử dụng cho XML
DOM
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 {
DocumentBuilderFactory DOMfactory = DocumentBuilderFactory.newInstance();
DocumentBuilder DOMbuilder = DOMfactory.newDocumentBuilder();
} catch (ParserConfigurationException e) {
e.printStackTrace();
}SAX phân tích cú pháp
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();
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 hoc photoshop tai ha noi !