用的是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();
⑵ java讀取xml文件,結果寫入新建的txt中。
使用sax或dom的方式進行讀取,然後通過流的形式保存到指定txt文本內。
⑶ JAVA讀寫XML,加下注釋
public class w3c_Xml {
//得到dom的解析工廠
static DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
static DocumentBuilder builder = null;
public static void readXML() {
try {
//得到真正的解析器
builder = factory .newDocumentBuilder();
//得到此xml文件的容器上下文或句柄或根節點
Document document = builder.parse(new File("E:\\Projects\\NyWeb\\NyWebBase\\version1.0\\Project\\fd\\WebRoot\\WEB-INF\\web.xml"));
//得到根節點
Element rootElement = document.getDocumentElement();
//在xml中把Header前面的空格也當成了一個節點,所以我們拿值時還要在拿NodeList
NodeList list = rootElement.getElementsByTagName("Header");
Element element = (Element) list.item(0);
//在java中他把<Header>也作為了一個節點,所以我們拿值時,拿他下面的第一個孩子節點,即getFirstChild然後在getNodeValue()才能拿到值
System.out.println(element.getChildNodes().item(0).getNodeValue());
} catch (Exception e) {
System.out.println("exception:" + e.getMessage());
}
}
public static void writeXML(Document document,String filename)
{
try {
builder = factory .newDocumentBuilder();
document.normalize();
/** 將document中的內容寫入文件中 */
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
//編碼
DOMSource source = new DOMSource(document);
PrintWriter pw = new PrintWriter(new FileOutputStream(filename));
StreamResult result = new StreamResult(pw);
transformer.transform(source, result);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void updateXML()
{
try {
builder = factory .newDocumentBuilder();
Document document = builder.parse(new File("E:\\Projects\\NyWeb\\NyWebBase\\version1.0\\Project\\fd\\WebRoot\\WEB-INF\\web.xml"));
Node root = document.getDocumentElement();
/**如果root有子元素*/
if(root.hasChildNodes())
{
NodeList ftpnodes = root.getChildNodes();
/**循環取得ftpnodes所有節點*/
for(int i=0;i<ftpnodes.getLength();i++)
{
Node ftpList = ftpnodes.item(i);
//System.out.println(ftpList.getTextContent());
}
for(int i=0;i<ftpnodes.getLength();i++)
{
Node ftpList = ftpnodes.item(i);
ftpList.setTextContent(ftpList.getTextContent()+" update");
}
}
writeXML(document,"E:\\Projects\\NyWeb\\NyWebBase\\version1.0\\Project\\fd\\WebRoot\\WEB-INF\\web.xml");
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args)
{
readXML();
updateXML();
}
}
⑷ java 如何讀取一個2G的xml文件
在處理一個2G大小的XML文件時,我們面對的主要挑戰是內存限制。在眾多解析XML的方法中,如SAX、DOM、JDOM和DOM4J,DOM4J被認為效率最高且能夠處理的XML文件也最大,不過其最大容量也不過幾十兆而已。對於2G如此龐大的XML文件,內存顯然是不足的。
面對如此龐大的文件,我們可以考慮將它存儲到資料庫中,這樣既能解決內存問題,又能方便地進行查詢和操作。當然,將整個2G的XML文件一次性載入到資料庫中可能仍會面臨性能瓶頸。因此,另一種可行的方法是將文件分割成多個較小的部分,分別存儲和處理,這樣既能保證內存的充足,也能提高處理效率。
無論是存儲在資料庫中還是分割存儲,我們都需要考慮如何高效地讀取和解析這些XML文件。對於資料庫存儲的方案,可以使用SQL語句進行查詢和處理,而對於分割存儲的方案,則需要編寫相應的邏輯來逐個處理每個小文件。
綜上所述,對於2G大小的XML文件,我們不能直接採用傳統的內存解析方法,而是需要採取一些變通的策略。將文件存儲在資料庫中或是分割成多個小文件,都是可行的解決方案。這些方法不僅能夠避免內存不足的問題,也能提高處理效率和靈活性。
值得注意的是,無論採用哪種方法,都需要根據實際情況進行權衡和選擇。例如,如果資料庫資源有限,可能需要考慮文件分割的方案。而如果處理邏輯較為復雜,可能需要更多地依賴於資料庫的查詢功能。
總之,處理大型XML文件時,我們需要靈活運用各種策略,以確保系統能夠高效穩定地運行。無論是資料庫存儲還是文件分割,都需要仔細規劃和實施,以達到最佳的處理效果。
⑸ java項目中有個xml文件,如何設置路徑才可以在本機上的jar,區域網的別的電腦也能讀寫xml
本機作為服務端,別的電腦作為客戶端,別的電腦要讀寫XML,就發請求到服務端上,再返回結果集過去