用的是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,就发请求到服务端上,再返回结果集过去