解析xml文件,syso出来就可以。dom,sax都可以。
答案:1 悬赏:60 手机版
解决时间 2021-03-25 15:46
- 提问者网友:你挡着我发光了
- 2021-03-25 04:53
解析xml文件,syso出来就可以。dom,sax都可以。
最佳答案
- 五星知识达人网友:西风乍起
- 2021-03-25 05:16
有些看不明白你这些关系,用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;
}
就算做好了,也不能指望着顺序输出。
我用了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;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯