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中指定节点中的内容等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)