Android解析XML文件时属性顺序错乱,求指点?

学习Android解析xml文件过程中,发现标签里的属性在被读取后顺序发生错乱。
期待顺序为 :

  <customer name="Andy" tel="888888" email="123456@qq.com">Andy</customer>

读取顺序为:
图片说明

 <!--布局文件如下:-->
 <?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.administrator.xmltest.MainActivity">

    <TextView
        android:textSize="25dp"
        android:id="@+id/text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="正在读取XML..."
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>

<!--自定义看一个customers的xml文件-->
 <?xml version="1.0" encoding="utf-8"?>
<customers>
    <customer name="Andy" tel="888888" email="123456@qq.com">Andy</customer>
    <customer name="Jack" tel="666666" email="654321@qq.com">Jack</customer>
    <customer name="Rose" tel="999999" email="456789@qq.com">Rose</customer>

</customers>
 //   活动代码
 public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        XmlResourceParser xmlResourceParser=getResources().getXml(R.xml.customers);  // 获取到xml文档
        StringBuilder sb=new StringBuilder("");
        try {
            while(xmlResourceParser.getEventType()!=XmlResourceParser.END_DOCUMENT)
            {
                if(xmlResourceParser.getEventType()==XmlResourceParser.START_TAG)   // 开始标记
                {
                    String tag_name=xmlResourceParser.getName();   // 获取到标记名称
                    if(tag_name.equals("customer"))
                    {
                        String name,tel,email;
                        name=xmlResourceParser.getAttributeValue(0);
                        tel=xmlResourceParser.getAttributeValue(1);
                        email=xmlResourceParser.getAttributeValue(2);
                        sb.append("姓名:"+name+" ");
                        sb.append("电话:"+tel+" ");
                        sb.append("邮箱:"+email+" ");
                        sb.append("\n");
                    }
                }
                xmlResourceParser.next();  // 下一个标记
            }
            TextView textView=findViewById(R.id.text);
            textView.setText(sb.toString());
        }catch (Exception e)
        {
            e.printStackTrace();
        }


    }
}

6个回答

name=xmlResourceParser.getAttribute('name')
tel=xmlResourceParser.getAttributeValue('tel');
email=xmlResourceParser.getAttributeValue('email');

qq_37174526
Liu Zhian 的确是按照首字母排序,感谢各位回复,哈哈
一年多之前 回复

估计那是按照首字母顺序排序之后的 你再按照你写的那个顺序就不行了
Andy
这样你试一试 就好了

u010014073
阿里神鲲 按照 email name tel
一年多之前 回复

email name tel

是按照首字母顺序排序

你按关键字取属性值不就好了,按什么顺序取值

name=xmlResourceParser.getAttributeValue(1);
tel=xmlResourceParser.getAttributeValue(2);
email=xmlResourceParser.getAttributeValue(0);

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Qt生成XML文件节点中的属性顺序错乱的问题
用QDomDocument实现生成一个XML文件,rn其中一个节点按照如下顺序生成属性:rnid,name,desc,width,heightrn但是生成的文件格式却是类似这样的:rnrn也就是说节点中的属性顺序不是按照代码中写入的顺序存储的,请问各位大神,这是怎么回事?该怎么解决?rn
关于XML文件的解析问题求大神指点
情况是这样的,我创建了一个解析XML文件的类文件,然后解析出来以后显示到了一个Activity上面。这个没有问题。rn 但是我把那个XML文件复制了一下,把名字和里面的数据旁边的那些标签改了一下。然后又新建了一个解析这个XML文件的类文件。把第一个解析的程序复制了过来标签也改了一下,但是不能解析了。只能显示startDocument()这个方法里面的内容。rn 我想问一下有没有人提示一下问题出在哪里?rn 已经给出了能给出的最高分了,求指教啊。
解析XML文件时的问题
各位仁兄,帮帮忙,我现在要对一个xml文件进行解析,将所有的结点信息保存到一个list中,但我写的代码好像有点问题,递归的时候没有把所有结点信息都传给list,哪位帮忙一下,上面还等着我交任务呢rnrn[code=Java]package com.ibm.filenet.edu;rnimport java.io.IOException;rnimport java.util.ArrayList;rnimport java.util.Iterator;rnimport java.util.List;rnrnimport javax.xml.parsers.*;rnrnrnimport org.w3c.dom.*;rnimport org.xml.sax.SAXException;rnrnpublic class ParseXML rn public static void main(String[] args) rn List list = new ArrayList(); rn ParseXML instance = new ParseXML();rn String filePath = "C:\\Source\\xml file\\xml\\XML ppt\\xml day4\\dom_ sax\\dom\\student.xml"; rn list = instance.parse(filePath);rn Iterator iterator = list.iterator();rn //System.out.println("**************************");rn //while(iterator.hasNext())rn //System.out.println(iterator.next().toString());rn //rn rn rn rn rn public List parse(String filePath)rn List list = null;rn try rn DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();rn DocumentBuilder db = dbf.newDocumentBuilder();rn //File file = new File("C:\\Source\\xml file\\xml\\XML ppt\\xml day4\\dom_ sax\\sax\\candidate.xml");rn Document dom = db.parse(filePath);rn System.out.println("file path: " + dom.getDocumentURI());rn Element root = dom.getDocumentElement(); //root nodern list = Iterator(root);rn System.out.println("********************");rn Iterator iterator = list.iterator();rn while(iterator.hasNext())rn System.out.println(iterator.next().toString());rn rn //return list;rn catch (ParserConfigurationException e) rn e.printStackTrace();rn catch (SAXException e) rn e.printStackTrace();rn catch (IOException e) rn e.printStackTrace();rn rn return list;rn rn rn /**rn * rn * rn * rn * rn */rn public List Iterator(Element root) rn NodeList nodelist = root.getChildNodes();rn List list = new ArrayList();rn for (int i = 0; i < nodelist.getLength(); i++) rn Node node = nodelist.item(i);rn rn //下面这两个if块中有问题 rn if (node instanceof Text) rn String value = node.getNodeValue();rn //list.add(value);rn if (value != null && !value.trim().equals("")) rn System.out.println("content: " + value);rn list.add( value);rn rn rn if (node instanceof Element) rn System.out.println("node: " + node.getNodeName());rn Iterator((Element) node);rn list.add( node.getNodeName());rn rn rn //System.out.println("Iterator method success.");rn return list;rn rnrn[/code]
解析XML文件时的乱码问题
使用的是SAX解析器: [code=&quot;java&quot;] DocumentBuilderFactory doDocumentBuilder = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder = doDocumentBuilder.newDocumentBuilder(); [/code] [...
Android生成与解析xml文件
一、生成xml文件(XmlSerializer方法) 与StringBuffer方式不同: 按钮点击事件改为: public void click(View v){ try { XmlSerializer serializer = Xml.newSerializer(); File file = new F...
android解析xml文件求解
跪求大神,帮个忙,我有个XML文件是这样的,rnrn 785.6rn 201201rn 198.4rn 196.4rn 785.6rn 201202rn 198.4rn 196.4rn 785.6rn 201203rn 198.4rn 196.4rn 785.6rn 201204rn 198.4rn 192.14rn 785.6rn 201205rn 198.4rn 192.14rnrn我是用pull解析器对它进行解析,我有个要求就是要求是每4个不同的元素,组成一个hashmap,然后再添加到List中,意识就是pension,basemonth,fund,medical添加到hashmap中,然后再把这个hashmap的添加到list。添加的就是pension,还有后面的那个785.6.我的代码是这样的rnpublic static List> getPersons(InputStream xml) throws Exceptionrn List> list1=new ArrayList>();rn Map map=null;rn XmlPullParser pullParser=Xml.newPullParser();rn pullParser.setInput(xml, "UTF-8");rn int event=pullParser.getEventType();rn while(event!=XmlPullParser.END_DOCUMENT)rn switch (event) rn case XmlPullParser.START_DOCUMENT:rn break;rn case XmlPullParser.START_TAG:rn if("pension".equals(pullParser.getName()))rn map=new HashMap();rn rn map.put(pullParser.getName(), pullParser.nextText());rn break;rn case XmlPullParser.END_TAG:rn if("medical".equals(pullParser.getName()))rn list1.add(map);rn rn break;rn rn event=pullParser.next();rn rn return list1;rn rn我真的是无语了啊,怎么检验都是错误,都是显示出问题,我找来找去怎么也弄不了,求大神帮我修改下代码,或者如果对代码还有问题可以加我QQ:675411753,我把其他代码再发过来,真心求啊,我把分都给你们,帮我解决了我把分全部送了。
android解析生成xml文件
NULL 博文链接:https://fuchangle.iteye.com/blog/1870084
Android解析xml文件
一.主要实现 1.利用android api   XmlPullParser实现xml文件解析 二.关键代码
android 解析XML文件代码
android移动开发之解析xml的文件,值得你拥有
Android解析压缩的xml文件
Android解析压缩的xml文件       本文主要介绍xml文件解析,主要是想讲手机内压缩文件xml的解析,但是也顺便讲一下在目录assets中的xml文件的解析。        这里压缩文件的解析,一般做法是把压缩文件解析到相同目录下,得到File对象后,对xml文件进行解析。        Xml文件解析是有三种方法的,这里使用的是sax解析,其他的还有pull解析和DOM解析,
android SAX解析XML文件
xml文件,存放路径为“\mnt\sdcard\item.xml”rnrnrn rn 文字填空rn 1 rn rn 3rn 测试1rn 测试2rn rn rnrn该如何使用SAX解析它,并且中文可以正常显示。谢谢!我解析完,中文都是乱码
android的xml文件的解析
android的xml文件的解析,包括xml文件的几种的解析方式。DOM与SAX解析。
android Dom解析xml文件
包括android代码实例以及个人对Dom解析xml文件的总结文档。
android解析xml文件的方式
android解析xml文件的方式:本人学习写的例子!希望对下载者有些用处
Android 解析xml文件
一、这里使用的是dom方式去解析的xml文件 这里直接贴代码 1.xml文件(文件名server.xml)内容【测试是放在assets文件夹下的】 200 登录成功 56 张韶涵 58 158cm
android下解析xml文件的demo
android下解析xml文件的demo
Android对xml文件的解析
今天阅读android sdk官方文档时,看到这么一段话:          感觉深受启发:1.android的图形界面内部逻辑结构是树形结构,这个从xml文件的结构可以直观的看出来。如果我们要使用java代码来构建一个界面,实际上我们是在构建一棵树,明白了这一点,以后自己使用代码构建视图,逻辑上就很清楚了。2.文档中提到使用xml来构建(描述)布局是最简单和最高效的,在这里有个问题,最简
Android中XML文件的解析
Android中解析XML文件有三种方法: SAX:边加载边解析,占用内存小,速度快,使用回调函数实现 DOM:一次性加载整个文档,效率低 PULL:和SAX类似,但不用写回调函数 前两种解析方式这里不做深究,主要写下PULL解析,也是Android内置的XML解析方式的用法 /** * 使用pull方式解析XML文件 * 此处以解析项目下的配置文件And...
android sax解析xml文件
android用sax解析xml文件实例源码
Android中xml文件的解析
Android中的xml解析
Android之解析XML文件
Java中对xml文件的解析方式有以下3种:1.dom解析: 把文件先导入到内存,再解析,不很适合手机设备2. sax解析:边导入,边解析,以事件驱动的形式来解析xml文件,当解析到一个节点,回调该节点类型的方法3. pull解析:边导入,边解析,以事件驱动的形式来解析xml文件,当解析到一个节点,返回的是该节点的类型(int 整数),不再继续解析,需要手动指向下一个节点 ,直到文档的结尾 ,pul
android解析和生成XML文件
android解析和生成XML文件有三种方法 1、Simple API for XML(SAX) 2、Document Object(DOM) 3、Android附带的pull解析器 (推荐使用) 这里使用pull解析器
android之解析xml文件
1.为了快速演示一下解析xml文件,我们先新建一个students.xml文件,把它放到Tomcat的root文件夹下,其内容如下: 大一 女 小二 男 张三 男 2.新建一个安卓项目 xml布局中写一个按钮 java文件中的代码如下: package com.example.cookie.android0726parsexml;
解析xml文件 android
开发工具:eclipse
Android解析XML文件
本例使用多种方式获取本地XML文件,还有通过url获取XML文件,使用Android内置的PULL解析器对XML文件进行解析,例子是解析我国各个省市。 《Android解析XML文件》博文路径:http://blog.csdn.net/zzp16/article/details/7795410
Android关机顺序解析
public int interceptKeyBeforeQueueing(KeyEvent event, int policyFlags, boolean isScreenOn) { .... .... .... case KeyEvent.KEYCODE_POWER: { result &= ~ACTION_PASS_TO_USER; if (down) { if (isScreenOn && !mPowerKeyTriggered
如何解析xml文件根节点的属性
[code=html]rnrn rn rftyikufykufykrn 13537460013rn 1rn 1425032227329rn rn rn rftyikufykufykrn 13537460002rn 1rn 1425032211869rn rnrn[/code]rn这是从手机模拟器中的短信息数据库中读取出来的数据,并且已经写入到以上的xml文件中,这里省掉了头部rn为根节点。rn就是备份短信的功能。rn[code=java]rn /**rn * 该方法用于还原短信rn * rn * @param contextrn * 调用者的上下文rn */rn public static void restoreSms(Context context) throws Exception rn // 1、读取SD卡上的xml文件rn file = new File(Environment.getExternalStorageDirectory(),rn "smsbackup.xml");rn FileInputStream fis = new FileInputStream(file);rn XmlPullParser parser = Xml.newPullParser();rn parser.setInput(fis, "utf-8");rn rn // 2、读取Max属性,获取备份的短信的条数rn // int max = Integer.parseInt(parser.getAttributeValue(null, "count"));rn // int process = 0;rn // restoreCallBack.beforeRestore(count);rn // Log.i(TAG, count+ "");rnrn // 以上代码无法获取count的值,就试着直接获取并输出rn // 但还是出错rn System.out.println(parser.getAttributeValue(null, "count"));rnrn // 3、读取每条短信信息,"body", "address", "type", "date"rn String body = null;rn String address = null;rn String type = null;rn String date = null;rn ContentValues values = null;rn rn // 4、把短信插入到系统的短信应用rn int eventType = parser.getEventType();rn while (eventType != XmlPullParser.END_DOCUMENT) rn Log.i(TAG, "准备开始了");rnrn String tagName = parser.getName();rn switch (eventType) rn case XmlPullParser.START_TAG:rn if ("body".equals(tagName)) rn body = parser.nextText();rn else if ("address".equals(tagName)) rn address = parser.nextText();rn else if ("type".equals(tagName)) rn type = parser.nextText();rn else if ("date".equals(tagName)) rn date = parser.nextText();rn rn Log.i(TAG, "读取中");rn break;rnrn case XmlPullParser.END_TAG:rn if ("sms".equals(tagName)) rn values = new ContentValues();rn values.put("body", body);rn values.put("address", address);rn values.put("type", type);rn values.put("date", date);rn context.getContentResolver().insert(uri, values);rn Log.i(TAG, "一条记录产生了");rn rnrn default:rn break;rn rn // process++;rn // restoreCallBack.onSmsRestore(process);rn eventType = parser.next();rn rn fis.close();rn rn[/code]rnrn报的错误是空指针异常,错误行就是System.out.println(parser.getAttributeValue(null, "count"));rn如果注释掉该行,程序运行无误,但是需求要做一个进度条对话框来显示还原的进度,所以不需要获取到总数,这里是2rn,请教,该如何获取?在线等大牛解惑
[Android实例] Android之解析XML文件
[Android实例] Android之解析XML文件
求助:解析xml文件时报错
解析xml文件时报错,错误信息如下:rnjava.lang.NoClassDefFoundError: org/w3c/dom/DOMErrorrn at org.apache.xerces.jaxp.DocumentBuilderImpl.(Unknown Source)rn at org.apache.xerces.jaxp.DocumentBuilderFactoryImpl.newDocumentBuilder(Unknown Source)rnrn看错误信息好像是没找到实现类。rn我用到的类 import javax.xml.parsers.DocumentBuilder;rnimport javax.xml.parsers.DocumentBuilderFactory; 不知道应该引入哪个jar文件呀
用dom解析xml文件时
用dom解析xml文件时出错rn[Fatal Error] :1:1: Content is not allowed in prolog.rnorg.xml.sax.SAXParseException: Content is not allowed in prolog.rnrnrnprivate Document getMsgDoc(String xmlData) throws WOWExceptionrn rn Document document= null;rnrn if ( xmlData==null || xmlData.trim().length()<=0 )rn throw new Exception( "INVALID_XML_ERROR"+ xmlData );rnrn DocumentBuilderFactory factory =rn DocumentBuilderFactory.newInstance();rn factory.setNamespaceAware(true);rn try rn DocumentBuilder builder = factory.newDocumentBuilder();rn document = builder.parse( new InputSource(new StringReader(xmlData)) );rn catch (SAXException sxe) rn Log.println(sxe);rn catch (ParserConfigurationException pce) rn Log.println(pce);rn catch (IOException ioe) rn Log.println(ioe);rn rn请问是什么原因?rn return document;rn
在解析xml文件时,遇到 怎么办?
在解析xml文件时,遇到 怎么办?rn还有等相关html元素rn该文件是通过API取得的,知道里面的所有信息节点,解析时没考虑到会有这些格式,rn一句xml 源码是:rn 我的店铺的公告 rnrnChildNodes['bulletin'].Text或ChildNodes['bulletin'].nodevalue,在获取节点文本时得到的结果却是 : rn 我的店铺的公告 rnrn现在的问题是,不知道会不会有格式,也不知道会有哪几个格式rnrnrn
Xstream解析xml文件时的错误
rn rn rn beijingrn 北京rn rn Beijing Timern 288000rn 39.929985046387rn 116.3956451416rn rn rn rnrn实体类divisionsrnpublic class Divisions rn private ArrayList divisionList;rn实体类divisionrnpublic class Division rn private int id;rn private String name;rn private Location location;rn实体类Locationrnpublic class Location rn private String timezone;rn private int timezone_offset_gmt;rn private double latitude;rn private double longitude;rnrn解析的时候:rn XStream xStream = new XStream(new DomDriver());rn xStream.alias("Divisions", Divisions.class); rn xStream.alias("Division", Division.class);rn xStream.alias("Location", Location.class);rn xStream.addImplicitCollection(Divisions.class,"divisionList"); rn FileInputStream fileInputStream = new FileInputStream(new File("city1.xml"));rn InputStreamReader isr = new InputStreamReader(fileInputStream,"utf-8"); rn Divisions divisions=(Divisions)xStream.fromXML(isr);rn ArrayList divisionList =divisions.getDivisionList();rn报错:rncom.thoughtworks.xstream.mapper.CannotResolveClassException: divisionsrn求大神赐教
【Android】Android Studio 3.3突然出现xml文件代码错乱
今天打开AndroidStudio软件,突然发现项目的内容错乱了(惊恐万分。。。),想想自己也没有对AndroidStudio做过什么设置,于是网上各种百度,一番折腾之后,发现这位大神的博客帮助我解决了这个莫名其妙的问题,在此奉上博客地址表示感谢: Android Studio 代码错乱、文件错乱等 缓存清除解决方案 https://blog.csdn.net/qq_33456552/arti...
session属性错乱了
情况是这样的:rn有一个博客系统的例子,点击http://localhost:8080/03/userInfo_goinUser.htm?account=AAA后,请求交给相应的action处理,action就是根据account参数值,查询并设置一个userinfo的session属性,然后进入AAA的博客主页面,主页面有一个好友列表,点一个连接http://localhost:8080/03/userInfo_goinUser.htm?account=BBB,action处理后,设置userinfo属性,覆盖了原来的属性值,这时候在点击浏览器的后退按钮,退回AAA的主页面,再点击“我的相册”之类的连接,查询出的都是BBB的信息了,该怎么解决呢?请大家指教。
键盘错乱 高人指点
大家好.我装的xp,在英文模式下,我敲@出现的是";敲"出现的是@,而2和'就不会弄错.还有敲#出现的是£,敲~出现的是¬.在中文模式下就没有这个错误rn我重装系统,还是这样.但是这几次重装之前,没有这个错误,所以不是键盘的原因.rn太奇怪了,请高人指点.
Android XML文件中的属性详情
Android   XML文件中的属性详情 1.使用XML属性创建一个页面        ◆打开项目的XML文件 该布局还没写完,效果图如下:
硬盘顺序错乱一键调整
硬盘顺序错乱了,解压到任意盘符,点击运行orderdrv.cmd一秒恢复硬盘排序。
android中如何解析XML文件
XmlPullParserFactory    fac   = new XmlPullParserFactory.newInstance(); XmlPullParse  parser  =  fac.newPullParser(); parser.setInput(is,"utf-8"); int type = parser.getEventType(); while(type!=Xml
Android中解析与创建XML文件
Android中解析与创建XML文件 在Android中对XML的操作有多种方式,常见的有三种方式:SAX、DOM和PULL方式。 DOM方式会把整个XML文件加载到内存中,在PC上常使用DOM的方式。 但是在性能敏感的设备上,主要采用的是SAX的方式,但是缺点是嵌套多个分支的时候处理不是很方便。 而PULL的方式类似SAX方式,同样很节省内存。 因此,本文章中只提供PU
Android中对XML文件的解析
源码 博文链接:https://shenjichao2009.iteye.com/blog/1297082
相关热词 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图 c# 验证码图片生成类 c# 再次尝试 连接失败 c#开发编写规范 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数