关于XML解析的常用方式

    xiaoxiao2021-03-25  84

    关于XML解析的方式(个人喜爱的方式,有些不常用的就不写了)

    需要的jar包 dom4j / jaxen

    XML示例(该文件放置于src目录下)

    <?xml version="1.0" encoding="utf-8"?> <china> <province name="北京"> <city>东城区</city> <city>西城区</city> </province> <province name="天津"> <city>和平区</city> <city>河东区</city> </province> <province name="河北"> <city>石家庄</city> <city>衡水</city> </province> </china>

    1.获取结点的属性

     

    SAXReader reader = new SAXReader(); InputStream input = reader.getClass().getClassLoader().getResourceAsStream("xml.xml"); Document doc = reader.read(input); List<Attribute> provinceNameAttributeList = doc.selectNodes("//province/@name");

    2.根据结点名称获取结点属性

    SAXReader reader = new SAXReader(); InputStream input = reader.getClass().getClassLoader().getResourceAsStream("xml.xml"); Document doc = reader.read(input); List<Element> eles = doc.selectNodes("//province"); for(Element ele :eles){ System.out.println(ele.attributeValue("name")); }3.解析有命名空间的xml  ( 就是带xmlns="XXX"的xml)

    SAXReader reader = new SAXReader(); InputStream input = reader.getClass().getClassLoader().getResourceAsStream("xml.xml"); Document doc = reader.read(input); XPath xpath = doc.createXPath("//ns:china//ns:province"); HashMap<String, String> hm = new HashMap<String,String>(); hm.put("ns", "http:www.xxxx.xxx"); xpath.setNamespaceURIs(hm); List<Element> eles = xpath.selectNodes(doc); for(Element ele :eles){ System.out.println(ele.attributeValue("name")); }4.一些老方法,jdk自带

    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(Way4.class.getClassLoader().getResourceAsStream("xml.xml")); Element root = doc.getDocumentElement(); NodeList province = root.getElementsByTagName("province"); for(int i = 0 ; i<province.getLength();i++){ if(province.item(i) instanceof Element){ Element e = (Element) province.item(i); System.out.println(e.getAttribute("name")); } }

    5.构建xml文件

    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.newDocument(); Element bookstore = document.createElement("bookstore"); Element book = document.createElement("book"); book.setAttribute("id", "1"); Element name = document.createElement("name"); name.setTextContent("安徒生童话"); book.appendChild(name); Element author = document.createElement("author"); author.setTextContent("安徒生"); book.appendChild(author); Element price = document.createElement("price"); price.setTextContent("49"); book.appendChild(price); bookstore.appendChild(book); document.appendChild(bookstore); TransformerFactory tff = TransformerFactory.newInstance(); Transformer tf = tff.newTransformer(); tf.setOutputProperty(OutputKeys.INDENT, "yes"); OutputStream dest = new FileOutputStream(new File("文件路径")); tf.transform(new DOMSource(document), new StreamResult(dest )); 6.还有一些方式,以后再补充,睡觉

    转载请注明原文地址: https://ju.6miu.com/read-17061.html

    最新回复(0)