怎样读取xml文件中指定标记的内容

VincentTung 2010-08-04 09:03:36
有一个xml文件,内容如下
<?xml version="1.0" encoding="GB2312" ?>
<Root>
<IP>192.168.0.1</IP>
<IP>192.168.0.234</IP>
<IP>192.168.0.120</IP>
<IP>192.168.0.7</IP>
<IP>192.168.0.19</IP>

</Root>
我想把所有IP中的内容读出来,请问用Java怎么写?
...全文
291 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuyuhua0066 2010-08-05
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 llongfeng2008 的回复:]

引用 5 楼 laitaogood 的回复:
dom4j+xpath
相当简单


最讨厌你这种人。人家是来问问题,会你就把问题给人家解决了。“dom4j+xpath”扔了这么句话啥意思?充大个儿呀?
[/Quote]点到为止,有时候思路比答案重要,授之于鱼不如授之于渔
  • 打赏
  • 举报
回复
如果你用 JDK 5 或者以上版的话,可以直接使用 XPath 进行查找:

import java.io.InputStream;

import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;

import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;

public class XPathTest {

public static void main(String[] args) throws XPathExpressionException {
String xpath = "//Root/IP";
InputSource is = readInputSource("test.xml");

XPathFactory factory = XPathFactory.newInstance();
XPath path = factory.newXPath();
NodeList nodes = (NodeList)path.evaluate(xpath, is, XPathConstants.NODESET);
for(int i = 0, k = nodes.getLength(); i < k; i++) {
System.out.println(nodes.item(i).getTextContent());
}
}

private static InputSource readInputSource(String resource) {
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(resource);
return new InputSource(is);
}
}
laitaogood 2010-08-04
  • 打赏
  • 举报
回复
dom4j+xpath
相当简单
学习Java中 2010-08-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 will88 的回复:]
哇塞,成功了,谢谢高手。小弟再问一下,怎样往里面追加一条IP 呢?
[/Quote]

// 添加
public void add(String add) throws IOException {

Element root = document.getRootElement();
Element e = root.addElement("IP");
e.setText(add);
writeFile(document);

}

// 写入文件
private void writeFile(Document doc) throws IOException {
FileWriter out = new FileWriter(path);
doc.write(out);
out.flush();
out.close();
}
VincentTung 2010-08-04
  • 打赏
  • 举报
回复
哇塞,成功了,谢谢高手。小弟再问一下,怎样往里面追加一条IP 呢?
学习Java中 2010-08-04
  • 打赏
  • 举报
回复
Dom4j

package xml;

import java.io.File;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.QName;
import org.dom4j.io.SAXReader;

public class Dom4jTest {

private SAXReader reader;
private Document document;
private static String path = "c:/Dom4jSample1.xml";

public Dom4jTest(String str) throws DocumentException {
reader = new SAXReader();
document = reader.read(new File(str));
}

public static void main(String[] args) throws DocumentException {
// TODO Auto-generated method stub
Dom4jTest test = new Dom4jTest(path);
test.getInfo();

}

public void getInfo() {
Element root = document.getRootElement();

QName qname = new QName("IP");
List<Element> list = root.elements(qname);

for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i).getText());
}

}

}

VincentTung 2010-08-04
  • 打赏
  • 举报
回复
import java.io.File;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

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

public class Xml {
public static void main(String[] args) {
try {
DocumentBuilderFactory factory = DocumentBuilderFactory
.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new File("d:\\123\\123.xml"));
Element rootElement = document.getDocumentElement();

NodeList list = rootElement.getElementsByTagName("IP");
Element element = (Element) list.item(0);
System.out.println(element.getChildNodes().item(0).getNodeValue());

} catch (Exception e) {
System.out.println("exception:" + e.getMessage());
}
}
}

这个只能读一条IP
llongfeng2008 2010-08-04
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 laitaogood 的回复:]
dom4j+xpath
相当简单
[/Quote]

最讨厌你这种人。人家是来问问题,会你就把问题给人家解决了。“dom4j+xpath”扔了这么句话啥意思?充大个儿呀?

50,528

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧