楼主,我这里有记录,你可以参考参考哈
http://blog.csdn.net/whu_zhangmin/article/details/13144529
http://blog.csdn.net/whu_zhangmin/article/details/13144529
解决方案 »
- 给企业开发一个安卓软件和苹果软件,一般是什么价格?
- notification实时更新问题
- 求助反编译问题
- 没有继承ListActivity,ListView中的item如何实现点击响应?
- android widget 最新结构
- mx2 alertdialog 挡住了smartbar,怎么办?
- 深度定制的linux,不输于android(视频为证)
- 请教大神:activity跳转问题
- 目前安装android的SDK,在线安装的那种一直提示 google的文件找不到,没办法安装,求完整版SDK地址
- Android内存不足会导致launcher启动不了吗?
- android自动匹配的下拉菜单快捷键怎么调出来
- 求XP系统下DLNA播放器源码或思路
你这个“成功”是属性,因此有两个方法获取属性名和属性值的:
getAttributeName()
getAttributeValue()case XmlPullParser.START_TAG:
if (xmlParser.getAttributeCount() == 1) {
String attrValue = xmlParser.getAttributeValue(0);//得到的值就是“成功”
}
int eventType = parser.getEventType();
while(eventType != parser.END_DOCUMENT){
if(eventType==parser.START_TAG){
String tagName = parser.getName();
if(tagName.equls("PDAExchange")){
result = parser.getAttributeValue("returnMsg");
}
}
eventType = parser.next();
}
Log.i("result",result);
我应该要改哪里?才能把这一段xml解析出来?
服务器返回的一段XML:
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://www.fillaway.com.cn">
<PDAExchange returnMsg="成功">
<Supplier>
</Supplier><Vid>349
</Vid><ScanState/>
<Authority>
<Option>1</Option>
<Option>2</Option>
<Option>3</Option>
<Option>4</Option>
</Authority>
</PDAExchange>
</string> //这个result装的东西就是上面这段XML System.err.println("要解析的XML是:"+result); InputStream inStream= new ByteArrayInputStream(result.getBytes());
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// 得到一个DocumentBuilder解析类
DocumentBuilder builder = factory.newDocumentBuilder();
// 接收一个xml的字符串来解析xml,Document代表整个xml文档
Document document = builder.parse(inStream);
// 得到xml文档的根元素节点
Element personsElement = document.getDocumentElement();
// 得到标签为PDAExchange的Node对象的集合NodeList
NodeList nodeList = personsElement.getElementsByTagName("string");
for(int i = 0; i < nodeList.getLength(); i++)
{
// 如果该Node是一个Element
if(nodeList.item(i).getNodeType() == Document.ELEMENT_NODE)
{
Element personElement = (Element)nodeList.item(i);
// 得到Node的属性值
String Nodname = personElement.getAttribute("returnMsg");
System.err.println(Nodname);
NodeList childNodesList = personElement.getChildNodes();
for(int j = 0; j < childNodesList.getLength(); j++)
{
if(childNodesList.item(j).getNodeType() == Document.ELEMENT_NODE)
{
// 解析到了person下面的name标签
if("Vid".equals(childNodesList.item(j).getNodeName()))
{
// 得到name标签的文本值
String name = childNodesList.item(j).getFirstChild().getNodeValue();
System.out.println(name);
}
else if("Authority".equals(childNodesList.item(j).getNodeName()))
{
String age = childNodesList.item(j).getFirstChild().getNodeValue();
System.out.println(age);
}
}
}
}
}
你这个“成功”是属性,因此有两个方法获取属性名和属性值的:
getAttributeName()
getAttributeValue()case XmlPullParser.START_TAG:
if (xmlParser.getAttributeCount() == 1) {
String attrValue = xmlParser.getAttributeValue(0);//得到的值就是“成功”
}帮忙看看应该怎么写问题出在哪里?
服务器返回的一段XML:
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://www.fillaway.com.cn">
<PDAExchange returnMsg="成功">
<Supplier>
</Supplier><Vid>349
</Vid><ScanState/>
<Authority>
<Option>1</Option>
<Option>2</Option>
<Option>3</Option>
<Option>4</Option>
</Authority>
</PDAExchange>
</string> //这个result装的东西就是上面这段XML System.err.println("要解析的XML是:"+result); InputStream inStream= new ByteArrayInputStream(result.getBytes());
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// 得到一个DocumentBuilder解析类
DocumentBuilder builder = factory.newDocumentBuilder();
// 接收一个xml的字符串来解析xml,Document代表整个xml文档
Document document = builder.parse(inStream);
// 得到xml文档的根元素节点
Element personsElement = document.getDocumentElement();
// 得到标签为PDAExchange的Node对象的集合NodeList
NodeList nodeList = personsElement.getElementsByTagName("string");
for(int i = 0; i < nodeList.getLength(); i++)
{
// 如果该Node是一个Element
if(nodeList.item(i).getNodeType() == Document.ELEMENT_NODE)
{
Element personElement = (Element)nodeList.item(i);
// 得到Node的属性值
String Nodname = personElement.getAttribute("returnMsg");
System.err.println(Nodname);
NodeList childNodesList = personElement.getChildNodes();
for(int j = 0; j < childNodesList.getLength(); j++)
{
if(childNodesList.item(j).getNodeType() == Document.ELEMENT_NODE)
{
// 解析到了person下面的name标签
if("Vid".equals(childNodesList.item(j).getNodeName()))
{
// 得到name标签的文本值
String name = childNodesList.item(j).getFirstChild().getNodeValue();
System.out.println(name);
}
else if("Authority".equals(childNodesList.item(j).getNodeName()))
{
String age = childNodesList.item(j).getFirstChild().getNodeValue();
System.out.println(age);
}
}
}
}
}
这里不应有是"string", 而是"PDAExchange"。DocumentBuilderFactory factory = null;
DocumentBuilder builder = null;
Document document = null;
InputStream inputStream = null;
factory = DocumentBuilderFactory.newInstance(); try {
//inputStream = this.getResources().getAssets().open("info.xml");
inputStream = new ByteArrayInputStream(result.getBytes()); //log("inputStream : " + inputStream);
factory = DocumentBuilderFactory.newInstance();
// 得到一个DocumentBuilder解析类
builder = factory.newDocumentBuilder(); // 接收一个xml的字符串来解析xml,Document代表整个xml文档
document = builder.parse(inputStream);
// 得到xml文档的根元素节点
Element personsElement = document.getDocumentElement();
// 得到标签为PDAExchange的Node对象的集合NodeList
NodeList nodeList = personsElement.getElementsByTagName("PDAExchange");
log("length : " + nodeList.getLength());
for (int i = 0; i < nodeList.getLength(); i++) {
// 如果该Node是一个Element
if (nodeList.item(i).getNodeType() == Document.ELEMENT_NODE) {
Element personElement = (Element) nodeList.item(i);
// 得到Node的属性值
String Nodname = personElement.getAttribute("returnMsg");
log(Nodname); NodeList childNodesList = personElement.getChildNodes();
for (int j = 0; j < childNodesList.getLength(); j++) {
if (childNodesList.item(j).getNodeType() == Document.ELEMENT_NODE) {
// 解析到了person下面的name标签
if ("Vid".equals(childNodesList.item(j).getNodeName())) {
// 得到name标签的文本值
String name = childNodesList.item(j).getFirstChild().getNodeValue();
log(name);
} else if ("Authority".equals(childNodesList.item(j).getNodeName())) {
String age = childNodesList.item(j).getFirstChild().getNodeValue();
log(age); }
}
}
} } } catch (IOException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
} catch (SAXException e) {
e.printStackTrace();
} catch (ParserConfigurationException e) {
e.printStackTrace();
} finally {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}祝你好运!
然后 如果解析成功的话:
// 得到Node的属性值
String Nodname = personElement.getAttribute("returnMsg");
System.err.print(Nodname);
if ("Vid".equals(childNodesList.item(j).getNodeName())) {
// 得到name标签的文本值
String name = childNodesList.item(j).getFirstChild().getNodeValue();
System.err.print(name);
都没解析到
DocumentBuilderFactory factory = null;
DocumentBuilder builder = null;
Document document = null;
InputStream inputStream = null;
factory = DocumentBuilderFactory.newInstance(); try {
//inputStream = this.getResources().getAssets().open("info.xml");
inputStream = new ByteArrayInputStream(result.getBytes()); //log("inputStream : " + inputStream);
factory = DocumentBuilderFactory.newInstance();
// 得到一个DocumentBuilder解析类
builder = factory.newDocumentBuilder(); // 接收一个xml的字符串来解析xml,Document代表整个xml文档
document = builder.parse(inputStream);
// 得到xml文档的根元素节点
Element personsElement = document.getDocumentElement();
// 得到标签为PDAExchange的Node对象的集合NodeList
NodeList nodeList = personsElement.getElementsByTagName("PDAExchange");
log("length : " + nodeList.getLength());
for (int i = 0; i < nodeList.getLength(); i++) {
// 如果该Node是一个Element
if (nodeList.item(i).getNodeType() == Document.ELEMENT_NODE) {
Element personElement = (Element) nodeList.item(i);
// 得到Node的属性值
String Nodname = personElement.getAttribute("returnMsg");
log(Nodname); NodeList childNodesList = personElement.getChildNodes();
for (int j = 0; j < childNodesList.getLength(); j++) {
if (childNodesList.item(j).getNodeType() == Document.ELEMENT_NODE) {
// 解析到了person下面的name标签
if ("Vid".equals(childNodesList.item(j).getNodeName())) {
// 得到name标签的文本值
String name = childNodesList.item(j).getFirstChild().getNodeValue();
log(name);
} else if ("Authority".equals(childNodesList.item(j).getNodeName())) {
NodeList subNodesList = childNodesList.item(j).getChildNodes();
for (int k=0; k<subNodesList.getLength(); ++k) {
if ("Option".equals(subNodesList.item(k).getNodeName())) {
String age = subNodesList.item(k).getFirstChild().getNodeValue();
log(age);
}
} }
}
}
} } } catch (IOException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
} catch (SAXException e) {
e.printStackTrace();
} catch (ParserConfigurationException e) {
e.printStackTrace();
} finally {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}值应该都得到了
然后 如果解析成功的话:
// 得到Node的属性值
String Nodname = personElement.getAttribute("returnMsg");
System.err.print(Nodname);
if ("Vid".equals(childNodesList.item(j).getNodeName())) {
// 得到name标签的文本值
String name = childNodesList.item(j).getFirstChild().getNodeValue();
System.err.print(name);
都没解析到
一个解析的问题从2013年做到2014年了都 还没解决
看你的红圈注释说“红圈里没有东西”,如果getLength()为0的话,难道是你的InputStream有问题?
因为在我电脑上解析的时候都是有值的,代码跟你的一样,就是InputStream不一样
看你的红圈注释说“红圈里没有东西”,如果getLength()为0的话,难道是你的InputStream有问题?
因为在我电脑上解析的时候都是有值的,代码跟你的一样,就是InputStream不一样
靠!!!!问题不在我这里(android)接口的问题啊