当前位置:网站首页>Parsing of XML

Parsing of XML

2022-07-04 23:55:00 Timely

 

Catalog

One 、Java Three configuration locations and reading methods of configuration files in

Same bag

The root path

WIN-INF Safe path

Two 、XML Analytical way

What is? DOM4J?

DOM4J Common methods

XPath Use

  Case study :


One 、Java Three configuration locations and reading methods of configuration files in

  • Same bag

InputStream in = XmlReader.class.getResourceAsStream("config.xml");
  • The root path

InputStream in = XmlReader.class.getResourceAsStream("/config.xml");
  • WIN-INF Safe path

InputStream in = XmlReader.class.getResourceAsStream("WIN-INF/config.xml");

Two 、XML Analytical way

xml There are four parsing methods :DOM analysis 、SAX analysis 、DOM4J analysis 、JDOM analysis . Today I will focus on DOM4J

What is? DOM4J?

dom4j Is a simple open source library , Used for processing XML、 XPath and XSLT, It's based on Java platform , Use Java The collection framework of , Fully integrated DOM,SAX and JAXP. Download path :

https://dom4j.github.io/

Yes jar Package resources

There is also a code demonstration to teach you how to operate  

 

DOM4J Common methods

Method describe
selectNodes Get multiple nodes
selectSingleNode Get a single node
attributeValue

Returns the specified property value , If the property does not exist , Returns an empty string

getText Get the element text
getRootElemnent Get the root element

XPath Use

/  Define the path

@  attribute

SelectNodes("/root/item/@name")  take  item  Of  name  attribute 

  Case study :

needed jar package

xml The configuration file config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE config[
    <!ELEMENT config (action*)>
    <!ELEMENT action (forward*)> 
    <!ELEMENT forward EMPTY>
    <!ATTLIST action
       path CDATA #REQUIRED
       type CDATA #REQUIRED
    >
      <!ATTLIST forward
       path CDATA #REQUIRED
       name CDATA #REQUIRED
       redirect (true|false) "false"
    >
]>
	<!--
		config label : Can contain 0~N individual action label 
	-->
<config>
	<!--
		action label : Can be full of 0~N individual forward label  path: With / Starting string , And the value must be unique   Non empty  , The path corresponding to the sub controller 
		type: character string , Non empty , The full class name of the sub controller 
	-->
	<action path="/registerAction" type="test.action.RegisterAction">
		<forward name="success" path="/index.jsp" redirect="true" />
		<forward name="failed" path="/register.jsp" redirect="false" />
	</action>
	<action path="/loginAction" type="test.action.LoginAction">
		<forward name="a" path="/index.jsp" redirect="false" />
		<forward name="b" path="/welcome.jsp" redirect="true" />
	</action>
</config>

xml Parsing code :

package com.zking.demo;

import java.io.InputStream;
import java.util.Iterator;
import java.util.List;

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

public class XmlReader {

	public static void main(String[] args)throws Exception {
		InputStream in = XmlReader.class.getResourceAsStream("/config.xml");
	    SAXReader sax = new SAXReader();
	    Document doc = sax.read(in);
	    // Get the root element 
	    Element rootElement = doc.getRootElement();
	    List<Element> actions = rootElement.selectNodes("action");
        for(Element e: actions) {
        	String path = e.attributeValue("path");
            String type = e.attributeValue("type");
            
            System.out.println("action path = "+path);
            System.out.println("action type = "+type);
            
            List<Element> forwards = e.selectNodes("forward");
           for(Element f: forwards) {
        	   String name = f.attributeValue("name");
               String fpath = f.attributeValue("path");
               String redirect = f.attributeValue("redirect");
               
               System.out.println("forward name = "+name);
               System.out.println("forward fpath = "+fpath);
               System.out.println("forward redirect = "+redirect);
           }
           System.out.println("=====================");
        }
        
        
	}
}

The renderings are as follows :

 

原网站

版权声明
本文为[Timely]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/185/202207042347303998.html