永发信息网

解析xml文件,syso出来就可以。dom,sax都可以。

答案:1  悬赏:60  手机版
解决时间 2021-03-25 15:46
解析xml文件,syso出来就可以。dom,sax都可以。
最佳答案
有些看不明白你这些关系,用Map不能很好的理清这些关系,而且Map是无序的,
就算做好了,也不能指望着顺序输出。
我用了List + bean的方式。能达到你想要的结果
如有问题再联系。
---------------------------------------------------------------------------------------------------------
输出结果:
00001 1 显示器 2 主机 3 打印机
00002 1 用户Id 2 部门名称

---------------------------------------------------------------------------------------------------------

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class Dom {
public static void main(String[] args) throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document root = builder.parse(new File("D:\\code.xml"));
NodeList list = root.getElementsByTagName("Map");
List result = new ArrayList();
for (int i = 0; i < list.getLength(); i++) {
Codes codes = new Codes();
Element element = (Element) list.item(i);
String id = element.getAttribute("id");
codes.mapId = id;

codes.code = getNodeValue(element, "Code");

NodeList codevalues = element.getElementsByTagName("Value");
List values = new ArrayList();
for (int j = 0; j < codevalues.getLength(); j++) {
Value v = new Value();
Element velement = (Element) codevalues.item(j);
v.CodeId = getNodeValue(velement, "CodeId");
v.CodeValue = getNodeValue(velement, "CodeValue");
values.add(v);
}
codes.values = values;
result.add(codes);
}

for (int i = 0; i < result.size(); i++) {
Codes code = (Codes) result.get(i);
System.out.print(code.code + "\t");
for (int j = 0; j < code.values.size(); j++) {
Value value = (Value) code.values.get(j);
System.out.print(value.CodeId + "\t");
System.out.print(value.CodeValue + "\t");
}
System.out.println();
}
}

private static String getNodeValue(Element element, String name) {
Node node = element.getElementsByTagName(name).item(0);
String str = node.getFirstChild().getNodeValue();
return str.trim();
}
}

class Codes {
String mapId = null;
String code = null;
List values = new ArrayList();
}

class Value {
String CodeId = null;
String CodeValue = null;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
在纯DOS下运行p.bat批处理即可自动运行.。具
k9054列车10节车箱68,69在那个位置
输入一个整数n,输出数字1到n按字典序排序的
沪宁杭工业基地的核心是A.上海B.北京C.沈阳D.
死者十八七的意思是什么?
精装修多少钱一平方 精装修住宅到底“精”在
阿湾派出所地址在什么地方,想过去办事,
如何数完全国6000万套房子
65mn钢板可以用什么板代替
护彤为什么禁用
300升冰箱没有60个5升油桶大
现在liquidsky怎么注册
怎么用“是为了”和“更是为了”造句?
宜昌上市公司名单公布
那个中国第一BBOY杨凯身高体重多少啊?
推荐资讯
买房为什么不要带8的
学校、社会、家长如何形成合力共同做好后进生
12x+45×12=15x怎么解
清朝被推翻之后,那些大臣都是什么样的结局
饮水机加热器可以换吗
普通冰箱一天用多少电?
什么叫解铃还需系铃人
朗动自动领先提速10—20码顿挫感怎么回事
8、9、13、3相加减乘除会等于24吗?
结婚过后又收了别人补的红包怎么办?听说不能
溧阳哪里有比较好的学校
who did give you book?/ who gave you
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?