2 qq 35383085 qq_35383085 于 2017.01.10 19:51 提问

解析这样的XML 需要怎么做 100C
 <?xml version="1.0" encoding="UTF-8"?>
<!-- 根目录 -->
<ResNursingOrderBean>
<code>1</code>
<message>获取数据成功</message>
<totalScore>分数</totalScore> 
<!-- 外层list对象 -->
    <NursedList > 
        <projectId >1</projectId> 
        <projectName>教育程度</projectName>
        <projectMark>0</projectMark>
        <projectType>1</projectType>
        <!-- 内层List对象 -->
            <OptionList id="选项答案">
                <optionId >B</optionId>
                <optionName>中专</optionName>
                <optionMark>0</optionMark>
            </OptionList>
            <OptionList id="选项答案">
                <optionId >C</optionId>
                <optionName>大专</optionName>
                <optionMark>0</optionMark>
            </OptionList>
    </NursedList>  
    <NursedList >
        <projectId >1</projectId>  
        <projectName>入院方式</projectName>
        <projectMark>0</projectMark>
        <projectType>1</projectType>
            <OptionList id="选项答案">
                <optionId >A</optionId>
                <optionName>步行</optionName>
                <optionMark>0</optionMark>
            </OptionList>
            <OptionList id="选项答案">
                <optionId >B</optionId>
                <optionName>轮椅</optionName>
                <optionMark>0</optionMark>
            </OptionList>
    </NursedList>   
</ResNursingOrderBean>  

8个回答

qq_34900539
qq_34900539   2017.01.10 19:50

给父节点元素中加id标识

zhangpan_soft
zhangpan_soft   2017.01.10 20:11

现在各行业基本都不用xml传输数据了,建议学json,!至于你这个问题,xml解析有两种,一种是基于事件的,就是触发一次事件读一段代码,一种是基于什么的忘了,就是一次性把所有数据全部加载,然后解析,便于随机读取,但是这样内存消耗过大,具体可以百度

zhglance
zhglance   2017.01.10 20:35

使用dom4j,之前用xml都是用这个工具,http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/17/3082949.html

u010528826
u010528826   2017.01.10 20:56
 public class Test {
    @SuppressWarnings("unchecked")
    public static void main(String[] args) throws Exception {
        //这里改成你的文件
        InputStream in = new FileInputStream("H:test.xml");
        SAXReader reader = new SAXReader();
        Document doc = reader.read(in);
        Element root = doc.getRootElement();

        System.out.println("code:" + root.elementText("code"));
        System.out.println("message:" + root.elementText("code"));
        System.out.println("totalScore:" + root.elementText("code"));
        System.out.println();
        List<Element> nursedList = root.elements("NursedList");
        for (int i = 0; i < nursedList.size(); i++) {
            Element element = nursedList.get(i);
            System.out.println("nursedList:" + i);
            System.out.println("-->projectId:" + element.elementText("projectId"));
            System.out.println("-->projectName:" + element.elementText("projectName"));
            System.out.println("-->projectMark:" + element.elementText("projectMark"));
            System.out.println("-->projectType:" + element.elementText("projectType"));
            List<Element> optionList = element.elements("OptionList");
            for (int j = 0; j < optionList.size(); j++) {
                Element option = optionList.get(j);
                System.out.println();
                System.out.println("-->OptionList:" + i + ",id:" + option.attributeValue("id"));
                System.out.println("---->optionId:" + option.elementText("optionId"));
                System.out.println("---->optionName:" + option.elementText("optionName"));
                System.out.println("---->optionMark:" + option.elementText("optionMark"));
            }
        }

        in.close();
    }
}

用的是 dom4j 1.6.1+。代码你自己优化下

baij1230
baij1230   2017.01.10 22:25

用sax或者dom4j

hehexiaoxia
hehexiaoxia   2017.01.11 09:52

写一个与之相对应的结构体,然后用xml反序列化到结构体中。

a193314
a193314   2017.01.11 18:54

大部分语言都有对应的库,你根据你用的编程语言,找个库就能解。如果是C/C++的话, 可以用libxml2 或者tinyxml 。很多的。其他语言不熟悉

strongerzhi
strongerzhi   2017.01.12 09:12

首先,需要定义一个类型或结构ResNursingOrderBean来存储这个Xml的所有内容,里面有字段code,message, totalscore,NursedList[],同样,再申明一个NursedList的类型或者结构体,按照上面说的记录,完成这些之后,你可以开始加载你的XML文档,然后根据节点名称对号入座,最终得到一个ResNursingOrderBean类型的实例就完成了XML的解析

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!