解析xml类型的字符串对我来说是很重要的一部分
String str = "<service><sid>1</sid><name>新闻发布服务</name><port>1599</port></service>";
因为项目中要多次用到解析字符串的方法,麻烦各位给支个招,简单方便快捷的方法是最好的啦
------解决方案--------------------
先弄清xml的数据结构,就很简单了。
- Java code
/** * 建立数据文件的读取连接 * * @return 读取成功时返回Document对象,失败则返回空 */ public static Document getDocument() { Document doc1 = null; File file = new File("xml_path"); SAXReader xml_read = new SAXReader(); try { doc1 = xml_read.read(file); } catch (DocumentException e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } return doc1; }private Element search_service(Document doc, String id) { Element root = doc.getRootElement(); String xml_path = "/service/sid"; Node node = root.selectSingleNode(xml_path); if (node != null) { if (node.getNodeType() == Node.ELEMENT_NODE) { return (Element) node; } } return null; }获取xml的数据:public void getData(){doc = getDocument(); Element e = search_service(doc, id); String name=e.elementText("name");///还要获得其他结点信息 }
------解决方案--------------------
在项目下建立一个xml文件 试着解析一下
- Java code
import java.io.File;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import org.w3c.dom.Document;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("./新建 文本文档.xml")); NodeList list = document.getElementsByTagName("Header"); for (int i = 0; i < list.getLength(); i++) { System.out.println(list.item(i).getFirstChild().getNodeValue()); } } catch (Exception e) { } }}
------解决方案--------------------
一般如果是固定标签的话我用digester,用起来也方便,写好rule文件后,不用操作每个结点了
提供一段代码
rules.xml
- XML code
<?xml version="1.0" encoding="UTF-8" ?> <digester-rules> <pattern value="foo"> <object-create-rule classname="example.Foo" /> <set-properties-rule /> <bean-property-setter-rule pattern="name" /> <bean-property-setter-rule pattern="age" /> <pattern value="bar"> <object-create-rule classname="example.Bar" /> <set-properties-rule /> <bean-property-setter-rule pattern="id" /> <bean-property-setter-rule pattern="title" /> <set-next-rule methodname="setBars" /> <pattern value="childList"><pattern value="child"> <object-create-rule classname="example.Child" /> <set-properties-rule /> <bean-property-setter-rule pattern="sex" /> <bean-property-setter-rule pattern="school" /> <set-next-rule methodname="addChild" /> </pattern> </pattern> </pattern> </pattern> </digester-rules>
------解决方案--------------------
顶!!
------解决方案--------------------
用dom4j解析xml文件,很简单!网上很多例子!
------解决方案--------------------