java读出xml中的内容。

java读出xml中的内容。,第1张

DTD是对xml格式进行规范的,当它不合规范,xml就会飘红,我想,对于你这个题目来说完全没有必要。

<xml version="10" encoding="UTF-8">

<librarycards>

<librarycard>

<name>张三</name>

<sex>男</sex>

<studentNO>11111</studentNO>

<cardNO>22222</cardNO>

<faculty>南京某某大学</faculty>

</librarycard>

<librarycard>

<name>李四</name>

<sex>男</sex>

<studentNO>11112</studentNO>

<cardNO>22223</cardNO>

<faculty>南京某某大学</faculty>

</librarycard>

</librarycards>package comlhxtest;

import javaioFile;

import javaioIOException;

import javaxxmlparsersDocumentBuilder;

import javaxxmlparsersDocumentBuilderFactory;

import javaxxmlparsersParserConfigurationException;

import orgw3cdomDocument;

import orgw3cdomElement;

import orgw3cdomNodeList;

import orgxmlsaxSAXException;

public class Test {

public static void main(String[] args) {

DocumentBuilderFactory factory=

DocumentBuilderFactorynewInstance();

try {

DocumentBuilder builder=factorynewDocumentBuilder();

File f=new File("src/com/lhx/test/testxml");

try {

Document doc=builderparse(f);

Element root= docgetDocumentElement();

NodeList list1=rootgetElementsByTagName("name");

NodeList list2=rootgetElementsByTagName("sex");

NodeList list3=rootgetElementsByTagName("studentNO");

NodeList list4=rootgetElementsByTagName("cardNO");

NodeList list5=rootgetElementsByTagName("faculty");

// HashMap<String,Student> map=new HashMap<String, Student>(); 要保存就创建Student

for(int i=0;i<list1getLength();i++){

String name=list1item(i)getTextContent();

Systemoutprintln("\tname:\t"+name);

String sex=list2item(i)getTextContent();

Systemoutprintln("\tsex:\t"+sex);

String studentNO=list3item(i)getTextContent();

Systemoutprintln("\tstudentNo:\t"+studentNO);

String cardNO=list4item(i)getTextContent();

Systemoutprintln("\tcardNo:\t"+cardNO);

String faculty=list5item(i)getTextContent();

Systemoutprintln("\tfaculty:\t"+faculty);

}

} catch (SAXException e) {

eprintStackTrace();

} catch (IOException e) {

eprintStackTrace();

}

} catch (ParserConfigurationException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}

}

}

附图:

这是dom解析,,,大概就解析成这样。然后。。。。你需要其他的处理应该不难了。

如果可行的话,望采纳…………^_^

java读取xml信息常用技术有dom解析和dom4J解析

dom4j是最常用的java解析xml技术,在使用时需要下载dom4jjar

具体解析方法可以参考一下内容

xml结构

<books> 

   <book id="001"> 

      <title>Harry Potter</title> 

      <author>J K Rowling</author> 

   </book> 

   <book id="002"> 

      <title>Learning XML</title> 

      <author>Erik T Ray</author> 

   </book> 

</books>

解析为List集合

import javaioFile;

import javautilList;

import orgdom4jAttribute;

import orgdom4jDocument;

import orgdom4jElement;

import orgdom4jioSAXReader;

public class Demo {

 public static void main(String[] args) throws Exception {

  SAXReader reader = new SAXReader();

  File file = new File("booksxml");

  Document document = readerread(file);

  Element root = documentgetRootElement();

  List<Element> childElements = rootelements();

  for (Element child : childElements) {

   //未知属性名情况下

   /List<Attribute> attributeList = childattributes();

   for (Attribute attr : attributeList) {

    Systemoutprintln(attrgetName() + ": " + attrgetValue());

   }/

   //已知属性名情况下

   Systemoutprintln("id: " + childattributeValue("id"));

   //未知子元素名情况下

   /List<Element> elementList = childelements();

   for (Element ele : elementList) {

    Systemoutprintln(elegetName() + ": " + elegetText());

   }

   Systemoutprintln();/

   //已知子元素名的情况下

   Systemoutprintln("title" + childelementText("title"));

   Systemoutprintln("author" + childelementText("author"));

   //这行是为了格式化美观而存在

   Systemoutprintln();

  }

 }

}

可以通过元素中的getText方法获取到节点的内容。

举例:

SAXReader sax = new SAXReader();

Document document = saxread(reader);//reader为定义的一个字符串,可以转换为xml

Element root = documentgetRootElement();//获取到根节点元素String str = root getText()//获取到节点的内容

用到的是dom4j-161jar,需要引入的包是:

import orgdom4jDocument;

import orgdom4jDocumentException;

import orgdom4jElement;

import orgdom4jioSAXReader;

备注:如果是多个子节点可以通过”Element xx=root element("code")“获取到子节点的元素,前提是需要知道子节点的名称。

java读取xml信息常用技术有dom解析和dom4J解析

dom4j是最常用的java解析xml技术,在使用时需要下载dom4jjar

具体解析方法可以参考一下内容

xml结构

<books>

<book id="001">

<title>Harry Potter</title>

<author>J K Rowling</author>

</book>

<book id="002">

<title>Learning XML</title>

<author>Erik T Ray</author>

</book>

</books>

package comapplet;

import javaioByteArrayInputStream;

import javaioFile;

import javaioStringReader;

import javautilIterator;

import javautilList;

import orgapachecommonslangStringUtils;

import orgdom4jDocument;

import orgdom4jDocumentHelper;

import orgdom4jElement;

import orgdom4jioSAXReader;

public class B {

public static void main(String[] args) {

String inputBizInfo = "<xml version=\"10\" encoding=\"utf-8\">\n"

+ "<EAS>\n"

+ "  <Header>\n"

+ "    <TransID>e688030e-f86f-455b-b143-58871084670b</TransID>\n"

+ "    <TransTime>2015-05-29 02:12:15</TransTime>\n"

+ "    <DataType>Vendor/Customer</DataType>\n"

+ "    <OptCatalog>Single</OptCatalog>\n"

+ "    <OptType>Update/Create</OptType>\n"

+ "    <RowCount>1</RowCount>\n" + "  </Header>\n"

+ "  <MasterData>\n" + "    <Field name=\"UnitClass\">\n"

+ "      <!--单位分类-->2000 单位分类   测试一下\n" + "      </Field>\n"

+ "    <Field name=\"AccountGroup\">\n" + "      <!--账户组-->\n"

+ "      </Field>\n" + "    <Field name=\"Name1 \">\n"

+ "      <!--单位全称-->1111   文具公司\n" + "      </Field>\n"

+ "  </MasterData>\n" + "  <ChangeDetail>\n"

+ "    <ChangeFields name=\"Name1\">\n"

+ "      <OldValue>文具</OldValue>\n"

+ "      <NewValue>皮包</NewValue>\n"

+ "      <OperationType>修改</OperationType>\n"

+ "    </ChangeFields>\n" + "  </ChangeDetail>\n" + "</EAS>";

// 我想获得这个xml中遍历分别获得

// 2000 单位分类 测试一下 ,空, 1111 文具公司 这样的3组值,每组值中的数据 用空格隔开放到数组中去,应该怎么办呢

try {

SAXReader reader = new SAXReader();

String txt = inputBizInforeplaceAll("\n", "");

// Document doc = readerread(new StringReader(txt));

// Document doc = readerread(new

// File("F:\\zz\\FileRecv\\MyWebSocket\\src\\com\\applet\\NewFilexml"));

// Document doc = readerread(new ByteArrayInputStream(txt

// getBytes("UTF-8")));

// Systemerrprintln(txt);

// Systemerrprintln(rootattribute(0)getName());

Document doc = DocumentHelperparseText(txt);

Element root = docgetRootElement();

// Systemoutprintln("Root: " + rootgetName());

List projects = rootselectNodes("MasterData/Field");

// Systemerrprintln(projectssize());

Iterator it = projectsiterator();

while (ithasNext()) {

Element elm = (Element) itnext();

// Systemoutprintln("index:"+elmattributeValue("index")+" level:"+elmattributeValue("level")+" nickname:"+elmattributeValue("nickname")+" country:"+elmattributeValue("country")+" weiwang:"+elmattributeValue("weiwang"));

// Systemerrprintln(elmattributeValue(elmattribute(0)getName()));

// Systemerrprintln(elmgetTextTrim());

String text = elmgetTextTrim();

if (StringUtilsisNotBlank(text)) {

String[] split = textsplit(" ");

for (String string : split) {

//放入数组省略

Systemerrprintln(string);

}

}

}

} catch (Exception ex) {

exprintStackTrace();

}

}

}

语法问题,这一句:

<Lay class="uiLayBackground "x="0" y="0" w="0" h="0"/>

出了问题,注意写完class属性的值后输入一个空格!

属性与属性之间要有空格间隔!所以应该这么写:

<Lay class="uiLayBackground" x="0" y="0" w="0" h="0"/>

以上就是关于java读出xml中的内容。全部的内容,包括:java读出xml中的内容。、java如何从xml文件中读取一个值、java怎么取出xml中指定节点中的内容等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9794085.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存