永发信息网

java读取xml文件

答案:5  悬赏:0  手机版
解决时间 2021-05-07 04:16

<?xml version="1.0" encoding="UTF-8"?>
<personnel xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation='personal.xsd'>

  <person id="Big.Boss" >
    <name><family>Boss</family> <given>Big</given></name>
    <email>chief@foo.com</email>
    <link subordinates="one.worker two.worker three.worker four.worker five.worker"/>
  </person>

  <person id="one.worker">
    <name><family>Worker</family> <given>One</given></name>
    <email>one@foo.com</email>
    <link manager="Big.Boss"/>
  </person>

  <person id="two.worker">
    <name><family>Worker</family> <given>Two</given></name>
    <email>two@foo.com</email>
    <link manager="Big.Boss"/>
  </person>

  <person id="three.worker">
    <name><family>Worker</family> <given>Three</given></name>
    <email>three@foo.com</email>
    <link manager="Big.Boss"/>
  </person>

  <person id="four.worker">
    <name><family>Worker</family> <given>Four</given></name>
    <email>four@foo.com</email>
    <link manager="Big.Boss"/>
  </person>

  <person id="five.worker">
    <name><family>Worker</family> <given>Five</given></name>
    <email>five@foo.com</email>
    <link manager="Big.Boss"/>
  </person>
</personnel>

这样的xml文件怎么读取要读取<family>Worker</family>里面的值和<given>Five</given>的值还有<link manager="Big.Boss"/>
的值,怎么读取。

最佳答案
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
public class MyXMLReader2DOM {
 public static void main(String arge[]) {
  long lasting = System.currentTimeMillis();
  try {
   File f = new File("a.xml");
   DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
   DocumentBuilder builder = factory.newDocumentBuilder();
   Document doc = builder.parse(f);
   NodeList persons = doc.getElementsByTagName("person");
   for (int i = 0; i < persons.getLength(); i++) {
    Element person = (Element)persons.item(i);
    Node name = person.getElementsByTagName("name").item(0);
    String Family = name.getElementsByTagName("family").item(0).getFirstChild().getNodeValue();
    String given = name.getElementsByTagName("given").item(0).getFirstChild().getNodeValue();
    Element link = (Element)person.getElementsByTagName("link").item(0);
    String manager = link.getAttributeValue("manager");
   }
  }
 } catch (Exception e) {
  e.printStackTrace();
 }
}
全部回答
使用common中的digest工具
利用循环然后判断里面的字段是否相等吧,一般解析xml是把整个xml的数据全部读出来的,然后加个if判断吧

给你一个完整的例子

前提必须要去下一个jdom.jar 地址: http://www.jdom.org/dist/binary/

然后注意把xmlFile改一下

import org.jdom.*; import java.io.*; import java.util.List; import org.jdom.input.SAXBuilder;

public class JdomTest {  private String xmlFile = "data.xml";

 public void readXML(){   SAXBuilder builder = new SAXBuilder();   Document doc = null;   try{    doc = builder.build(new File(xmlFile));    Element root = doc.getRootElement();    List<Element> list = root.getChildren();    for(Element element : list){     System.out.println("id = "+element.getAttributeValue("id"));     System.out.println("family = "+element.getChild("name").getChild("family").getText());     System.out.println("family = "+element.getChild("name").getChild("given").getText());     System.out.println("manager = "+element.getChild("link").getAttributeValue("manager"));     System.out.println("=======================================");    }        }catch(FileNotFoundException fe){    System.out.println("找不到"+xmlFile+"文件");   }catch(Exception e){    e.printStackTrace();   }  }

 public static void main(String args[]) {   JdomTest jdom = new JdomTest();   jdom.readXML();

 } }

package demo1; //此处是我的项目包名,您不用复制 //以下是导入包 import java.io.FileInputStream; import java.util.List; import java.util.Vector; import org.jdom.Document; import org.jdom.Element; import org.jdom.input.SAXBuilder; public class Test { public static void main(String[] args) { FileInputStream fi = null; try { fi = new FileInputStream("D:\\a.xml"); SAXBuilder sb = new SAXBuilder(); Document doc = sb.build(fi); Element root = doc.getRootElement(); // 得到根元素 List Allstudents = root.getChildren(); // 得到根元素所有子元素的集合 Element student = null; for (int i = 0; i < Allstudents.size(); i++) { student = (Element) Allstudents.get(i); //下面代码根据节点名称获得xml文件节点内的信息并输出。 System.out.println(student.getChild("姓名").getText()); System.out.println(student.getChild("年龄").getText()); System.out.println(student.getChild("性别").getText()); } } catch (Exception e) { e.printStackTrace(); } finally { try { fi.close(); } catch (Exception e) { e.printStackTrace(); } } } }

这只是参考!!

希望采纳!!!!!!!!

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我是一个23岁的小伙子喜欢和40岁往上的男人睡
做梦总是梦到蛇、是什么预兆呀?
小敬同学为研究动物的呼吸作用,用右图所示装
喜欢听《我们是恋爱的人》这首歌的加群565674
爱情心愿寄语,带有心愿的句子
为什么把系统QQ会员去掉
准备入手联想Y450A-TSI(H),估计这款本最低多
黄色大地项链哪搞的
怎么买不了改名卡
斗破苍穹最新章节TXT?
7天了怎么都不送CF点了啊
如果一段爱只剩下沉默,淡淡德回答,繁衍的口
高手们进!!!
描写幸福生活的古诗
qq模糊怎样调
推荐资讯
听说幸福很简单,简单到时间一冲就冲淡?
失眠怎么好`
结婚跟谈恋爱有什么区别呢?
我这只布鲁悲剧吗?
哪里能下到高清mv?
dnf中,我进入了角色界面,按开始,就是进入
谁会做QQ炫舞的透明背景自定义字
怎么解除飞车防沉迷
现在哪个网游比较好赚钱?
徽动保龄球馆地址在哪,我要去那里办事
有谁知道这个电影
请大家看看月经后一星期做的B超结果
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?