A. 关于java xml读取时中文路径的问题
用下面的试试:
Documentdocument=builder.parse(newFile("D:\中文\aa.xml"));
原因:
builder.parse(Stringurl)这个传的参数用url的方式的,中文会有编码问题。
另外,你路径中的冒号用了中文符号,要注意!
B. java 关于读取xml文件的问题
用dom4j
dom4j 需要一个jar包 网上有下载 一搜很多的。
1.读取XML文件,获得document对象。
SAXReader reader = new SAXReader();
Document document = reader.read(new File("input.xml"));
2.解析XML形式的文本,得到document对象。
String text = "<members></members>";
Document document = DocumentHelper.parseText(text);
3.主动创建document对象。
Document document = DocumentHelper.createDocument();
Element root = document.addElement("members");// 创建根节点
二、节点相关
1.获取文档的根节点。
Element rootElm = document.getRootElement();
2.取得某节点的单个子节点。
Element memberElm=root.element("member");// "member"是节点名
3.取得节点的文字
String text=memberElm.getText();也可以用:
String text=root.elementText("name");这个是取得根节点下的name字节点的文字
4.取得某节点下名为"member"的所有字节点并进行遍历
List nodes = rootElm.elements("member");
for (Iterator it = nodes.iterator(); it.hasNext();) {
Element elm = (Element) it.next();
// do something
}
5.对某节点下的所有子节点进行遍历。
for(Iterator it=root.elementIterator();it.hasNext();){
Element element = (Element) it.next();
// do something
}
6.在某节点下添加子节点。
Element ageElm = newMemberElm.addElement("age");
7.设置节点文字。
ageElm.setText("29");
8.删除某节点。
parentElm.remove(childElm);// childElm是待删除的节点,parentElm是其父节点
三、属性相关。
1.取得某节点下的某属性
Element root=document.getRootElement();
Attribute attribute=root.attribute("size");// 属性名name
2.取得属性的文字
String text=attribute.getText();也可以用:
String text2=root.element("name").attributeValue("firstname");这个是取得根节点下name字节点的属性firstname的值
3.遍历某节点的所有属性
Element root=document.getRootElement();
for(Iterator it=root.attributeIterator();it.hasNext();){
Attribute attribute = (Attribute) it.next();
String text=attribute.getText();
System.out.println(text);
}
4.设置某节点的属性和文字。
newMemberElm.addAttribute("name", "sitinspring");
5.设置属性的文字
Attribute attribute=root.attribute("name");
attribute.setText("sitinspring");
6.删除某属性
Attribute attribute=root.attribute("size");// 属性名name
root.remove(attribute);
C. java 怎么读取xml里面的值
java读取xml信息常用技术有dom解析和dom4J解析
dom4j是最常用的java解析xml技术回,在使用时需答要下载dom4j.jar
具体解析方法可以参考一下内容
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>
D. 在java在如何解析XML文件
在Java环境中处理XML文件主要有四种方法:DOM(Document Object Model)、SAX(Simple API for XML)、JDOM以及JAXB(Java Architecture for XML Binding)。DOM是一种由W3C提供的方法,它将整个XML文件加载到内存中,并构建一棵数据树,以便快速访问各个节点。这种方法对系统性能要求较高,适合较小的XML文件,但对于较大的文档来说,可能不是最佳选择。
DOM API直接遵循XML规范,每个节点都是基于Node接口的,从多态性的角度来看,这是一种优秀的实现。然而,在Java中使用时,这种设计并不十分方便,且可读性较差。
以DOM为例,我们可以通过以下代码导入必要的包:
<pre>
<code>
import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.apache.crimson.tree.XmlDocument;
</code>
</pre>
接下来,我们创建一个DocumentBuilderFactory实例,并设置其属性:
<pre>
<code>
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
factory.setValidating(true);
</code>
</pre>
然后,我们通过DocumentBuilderFactory获得一个DocumentBuilder实例,并解析XML文件:
<pre>
<code>
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(fileURI);
</code>
</pre>
接下来,我们获取根节点并遍历所有student节点:
<pre>
<code>
Element elmtStuInfo = doc.getDocumentElement();
NodeList nlStudent = elmtStuInfo.getElementsByTagNameNS(strNamespace, "student");
for (int i = 0; i < nlStudent.getLength(); i++) {
Element elmtStudent = (Element)nlStudent.item(i);
NodeList nlCurrent = elmtStudent.getElementsByTagNameNS(strNamespace, "name");
}
</code>
</pre>
总之,DOM方法虽然功能强大,但对大文件处理效率较低,且在Java中的应用不够直观。在实际开发中,可根据具体需求选择合适的解析方式。
E. java读取配置文件的方法(xml)
用的是jdom包
URL url = RederXml.class.getClassLoader().getResource("");
String path = url.toString() + "/config.xml";\\工程种xml的路径
HashMap<String, String> map = new HashMap<String, String>();
SAXBuilder sax = new SAXBuilder();
Document doc = null;
try {
doc = sax.build(path);
} catch (JDOMException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
Element root = doc.getRootElement();
F. 在java在如何解析XML文件
在java环境下读取xml文件的方法主要有4种:DOM、SAX、JDOM、JAXB
1. DOM(Document Object Model)
此方法主要由W3C提供,它将xml文件全部读入内存中,然后将各个元素组成一棵数据树,以便快速的访问各个节点 。 因此非常消耗系统性能 ,对比较大的文档不适宜采用DOM方法来解析。 DOM API 直接沿袭了 XML 规范。每个结点都可以扩展的基于 Node 的接口,就多态性的观点来讲,它是优秀的,但是在 Java 语言中的应用不方便,并且可读性不强。
实例:
import javax.xml.parsers.*;
//XML解析器接口
import org.w3c.dom.*;
//XML的DOM实现
import org.apache.crimson.tree.XmlDocument;
//写XML文件要用到
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//允许名字空间
factory.setNamespaceAware(true);
//允许验证
factory.setValidating(true);
//获得DocumentBuilder的一个实例
try {
DocumentBuilder builder = factory.newDocumentBuilder();
} catch (ParserConfigurationException pce) {
System.err.println(pce);
// 出异常时输出异常信息,然后退出,下同
System.exit(1);
}
//解析文档,并获得一个Document实例。
try {
Document doc = builder.parse(fileURI);
} catch (DOMException dom) {
System.err.println(dom.getMessage());
System.exit(1);
} catch (IOException ioe) {
System.err.println(ioe);
System.exit(1);
}
//获得根节点StuInfo
Element elmtStuInfo = doc.getDocumentElement();
//得到所有student节点
NodeList nlStudent = elmtStuInfo.getElementsByTagNameNS(
strNamespace, "student");
for (……){
//当前student节点元素
Element elmtStudent = (Element)nlStudent.item(i);
NodeList nlCurrent = elmtStudent.getElementsByTagNameNS(
strNamespace, "name");
}