XML解析总结

1:XML和javaBean之间的映射

只要总结了两种方式:

1.1:XMap

the third support : nuxeo-common-5.4.3.jar(latest)

主要的操作对象:

org.nuxeo.common.xmap.XMap;

用法示例:

        List<UPCallcenterMenuTab> menuList = null;
        XMap xmap = new XMap();
        xmap.register(UPCallcenterMenuTabList.class);
        InputStream in = new FileInputStream(new File(filePath));
        Object[] result = (Object[]) xmap.loadAll(in);
        UPCallcenterMenuTabList menuTabList = (UPCallcenterMenuTabList) result[0];
        menuList = menuTabList.getMenuList();

1.2:XStream

the third support :xstream-1.4.1.jar

主要的操作对象:

com.thoughtworks.xstream.XStream

用法示例:

/****
     * read operation
     *
     * @param filePath
     *            :specified file path
     * @throws IOException
     */
    @SuppressWarnings("unchecked")
    private static List<UPCallcenterMenuTab> convertXMLToList(String filePath)            {
        List<UPCallcenterMenuTab> menuList = null;
        if (StringUtils.isEmpty(filePath) || StringUtils.isBlank(filePath)) {
            throw new NullPointerException("filePath is invalid!");
        }
        // 1:XStream instance
        XStream xstream = new XStream();
        xstream.alias("menus", List.class);
        xstream.alias("menu", UPCallcenterMenuTab.class);
        // 2:used to read bytes from file
        //FileReader fr = new FileReader(filePath);
         InputStreamReader reader = null;
        try {
            reader = new InputStreamReader(new FileInputStream(filePath),"UTF-8");
        } catch (UnsupportedEncodingException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        } catch (FileNotFoundException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        // buffer reader
        BufferedReader br = new BufferedReader(reader);
        // 3:construct ObjcetInputStream instance
        // ObjectInputStream ois = xstream.createObjectInputStream(br);

        // 4: read data using reader
        try {
            menuList = (List<UPCallcenterMenuTab>) xstream.fromXML(br);
            // menuList = (List<UPCallcenterMenuTab>)ois.readObject();
            // } catch (ClassNotFoundException e) {
        } catch (Exception e) {
            // TODO Auto-generated catch block
            logger.info("Excetpion ocurred when converting xml data to object");
            logger.info(e.getMessage(),e);
            //throw e;
        }

        return menuList;
    }

1:3:XMLConfiguration

the third support:  commons-configuration-1.3.jar

主要的操作类:org.apache.commons.configuration

用法示例:

public final class Configuration {
    private static Logger log = Logger.getLogger(Configuration.class);
    private static Configuration configuration;
   
    private XMLConfiguration config;
   
    private Configuration(){
        try{
            config = new XMLConfiguration();
            config.setDelimiterParsingDisabled(true);           
            config.load("lokosuite.cfg.xml");

        }catch(Exception e){
            log.error(this,e);
        }
    }
   
    public static Configuration getInstance(){
        if(configuration == null){
            configuration = new Configuration();
        }
        return configuration;
    }
   
    public String getString(String key){
        return config.getString(key);
    }
   
    public static void main(String[] args) throws Exception{
        String text= Configuration.getInstance().getString("membership.active-text");
        System.out.println(Configuration.getInstance().getString("shopping.transSuccess-text"));
        System.out.println(Configuration.getInstance().getString("membership.active-subject"));
        System.out.println(StringUtils.replace(text,"{activate-url}","adfasdf"));
        System.out.println(Configuration.getInstance().getString("core.version"));
       
       
    }
}

继续:

1.4:xml文件和xml字符串之间的转换

<操作前:dom4j-1-6-1.jar 和 jaxen-1.1-beta-6.jar是必须的;附件中有这两个jar包>

/**
         * 在运行操作xpath的程序中 添加jaxen-1.1-beta-6.jar
         * 以防抛java.lang.NoClassDefFoundError: org/jaxen/JaxenException异常
 */

1.4.1:xml文件转换为xml字符串

String xmlFileName = "你的文件绝对路径";

SAXReader  reader = new SAXReader();

FileInputStream fileInputStream = new FileInputStream(xmlFileName );

BufferedReader bufferReader = new BufferedReader(new InputStreamReader(fileInputStream ,"UTF-8"));

Document document = reader.read(bufferReader);

 

String xmlString = document.asXML();

1.4.2:xml字符串转换为xml文件

 

String xmlString = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><book>text</book>";

 

SAXReader reader = new SAXReader(false);
reader.setEncoding("UTF-8");
        try {
            ByteArrayInputStream byteStream = new ByteArrayInputStream(xmlString.getBytes());
       
            Document document = reader.read(byteStream);

            String fullFileName = "你要生成的完整的xml文件路径";

            File newFile = new File(fullFileName );
            Writer writer = new FileWriter(newFile);
           // 格式化输出
          OutputFormat format = OutputFormat.createPrettyPrint();

          // 设置编码
          format.setEncoding("UTF-8");

          XMLWriter xmlWriter = new XMLWriter(writer, format);


           // String xPathString = "//book";
           // Element element = (Element)document.selectSingleNode(xPathString);


           // System.err.println(element.getText());


        } catch (DocumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

/********************************************************暂时告一段落!********************************************************/

待续。。。

 

你可能感兴趣的:(xml解析)