Android XML什么写的,在Android上编写XML

这是API级别4的解决方案。它需要一个外部库,但是该库并不大,这使它变得容易得多。

我使用XOM 1.2.6及其核心软件包仅jar文件。

完整的活动代码,包括导入:

import java.io.BufferedReader;

import java.io.File;

import java.io.FileWriter;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.Writer;

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

import nu.xom.converters.DOMConverter;

import org.w3c.dom.DOMException;

import org.w3c.dom.Document;

import org.w3c.dom.DocumentFragment;

import org.w3c.dom.Element;

import org.w3c.dom.Node;

import org.w3c.dom.NodeList;

import android.app.Activity;

import android.os.Bundle;

import android.os.Environment;

import android.util.Log;

public class XOMTestActivity extends Activity {

private static final String TAG = "XOMTestActivity";

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

try {

DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();

//Used XOM project.xml file for testing

InputStream rawStream = this.getResources().openRawResource(R.raw.project);

Document document = docBuilder.parse(rawStream);

//API Level 4 will not always return a valid Document for XOM

//So, find the root level element manually

NodeList nodeList = document.getChildNodes();

Node elementNode = null;

for(int i = 0 ; i < nodeList.getLength() ; i++) {

Node n = nodeList.item(i);

if(n instanceof Element) {

elementNode = n;

break;

}

}

//assuming there was a root level element

DocumentFragment docFragment = document.createDocumentFragment();

docFragment.appendChild(elementNode);

nu.xom.Nodes nodes = DOMConverter.convert(docFragment);

nu.xom.Document xomDoc = new nu.xom.Document((nu.xom.Element) nodes.get(0));

Log.d(TAG, "onCreate: " + xomDoc.toXML());

String outFile =

Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "wc3-xom-doc.xml";

Writer writer = new FileWriter(outFile);

writer.write(xomDoc.toXML());

writer.close();

} catch(DOMException de) {

Log.e(TAG, "onCreate: dom exception: " + de.code, de);

} catch(Exception e) {

Log.e(TAG, "onCreate: exception", e);

}

}

}

时间不长。对于API级别7+,它会短很多,因为您可以跳过查找根元素所需的所有工作。结果apk是162k,所以我不觉得XOM给项目增加了很多权重。

魔力进来了DOMConverter。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值