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");
}