楼主,我这里有记录,你可以参考参考哈
http://blog.csdn.net/whu_zhangmin/article/details/13144529
http://blog.csdn.net/whu_zhangmin/article/details/13144529
解决方案 »
- android4.0.4的camera代码流程问题
- Fragment的创建方式,怎么设置用Activity去控制呢?难道把Fragment当做Activity来用吗?
- 【80分】关于2.1以下流量统计的几点疑问
- TF卡没办法复制?
- 给actionBar添加tab有两种 一种是固定的 一种是滚动的 问下滚动的是怎么添加的
- eclipse project 关闭之后无法再打开
- 不知道又没人关注给这位同学发个帖子支持下提高提高他的人气
- monkeyrunner不能同时操作两个设备的疑问
- android.content.pm.PackageManager$NameNotFoundException,请问各位好心大神这个一般是什么错误 怎么解决
- 萌新求教android studio greendao数据库问题
- 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)接口的问题啊