2012-09-24 32 views
0

的Java讀取ID XML我想一些數據添加到一個XML文件,如:與Android的

<people> 
    <person name="Jo"> 
     <number>0</number> 
     ... 
    </person> 
    <person name="Steve"> 
     <number>5</number> 
     ... 
    </person> 
</people> 

其中名稱是id值。我用這句話,因爲我需要知道,如果一些孩子有我要添加相同的名稱,所以我只需要編寫:

Document doc = docBuilder.parse(file); 
Element person = doc.getElementById("myname"); 

所以我並不需要做循環所有nodechild。我的問題是,爲了這個,我需要定義一個模式,但Java的返回我的錯誤在下面的代碼的第四行:

DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); 
docFactory.setNamespaceAware(true); 
docFactory.setValidating(true); 
docFactory.setAttribute("http://java.sun.com/xml/jaxp/properties/schemaLanguage", "http://www.w3.org/2001/XMLSchema");      
docFactory.setAttribute("http://java.sun.com/xml/jaxp/properties/schemaSource", "my schema in a string");      
    DocumentBuilder docBuilder = docFactory.newDocumentBuilder();  

錯誤是:

java.lang.IllegalArgumentException異常:http://java.sun.com/xml/jaxp/properties/schemaLanguage

,我已導入:

import javax.xml.parsers.DocumentBuilder; 
import javax.xml.parsers.DocumentBuilderFactory; 
import javax.xml.transform.Transformer; 
import javax.xml.transform.TransformerFactory; 
import javax.xml.transform.dom.DOMSource; 
import javax.xml.transform.stream.StreamResult; 


import org.w3c.dom.Document; 
import org.w3c.dom.Element; 

爲什麼我有這個錯誤?當然,我可以使用名稱作爲孩子,並讀取所有的NodeList,然後使用循環,但我認爲這種方式有更好的性能。 PS:我將模式作爲字符串插入。我不知道是否會出現錯誤,因爲錯誤出現在上一行,但如果我需要在文件中有模式,我該在哪裏保存文件?在原始文件夾?

回答

0

最後,我不得不把名字作爲一個值,而不是作爲一個屬性,做循環。這是我存檔的唯一選項。

0

嗯是的,你總是可以用DOM,SAXPull Parser,但請看下面提到的解析和操縱XML數據。

-JAXPJAXB

-Castor