All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.alibaba.antx.util.SimpleXMLWriter Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (c) 2002-2012 Alibaba Group Holding Limited.
 * All rights reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.alibaba.antx.util;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;

/**
 * 代表一个简单的XML writer,不支持名字空间。
 *
 * @author Michael Zhou
 */
public class SimpleXMLWriter extends XMLWriter {
    /**
     * 创建一个XML writer。
     *
     * @param file XML文件
     * @throws IOException 文件打开失败
     */
    public SimpleXMLWriter(File file) throws IOException {
        super(new FileOutputStream(file), OutputFormat.createPrettyPrint());
    }

    /**
     * 开始一个XML element。
     *
     * @param elementName element名
     * @throws SAXException SAX异常
     */
    public void startElement(String elementName) throws SAXException {
        startElement("", "", elementName, new AttributesImpl());
    }

    /**
     * 开始一个XML element。
     *
     * @param elementName element名
     * @param attrName    属性名
     * @param attrValue   属性值
     * @throws SAXException SAX异常
     */
    public void startElement(String elementName, String attrName, String attrValue) throws SAXException {
        if (attrValue == null) {
            attrValue = "";
        }

        AttributesImpl attrs = new AttributesImpl();

        attrs.addAttribute("", "", attrName, "CDATA", attrValue);

        startElement("", "", elementName, attrs);
    }

    /**
     * 开始一个XML element。
     *
     * @param elementName element名
     * @param attrName1   属性名
     * @param attrValue1  属性值
     * @param attrName2   属性名
     * @param attrValue2  属性值
     * @throws SAXException SAX异常
     */
    public void startElement(String elementName, String attrName1, String attrValue1, String attrName2,
                             String attrValue2) throws SAXException {
        if (attrValue1 == null) {
            attrValue1 = "";
        }

        if (attrValue2 == null) {
            attrValue2 = "";
        }

        AttributesImpl attrs = new AttributesImpl();

        attrs.addAttribute("", "", attrName1, "CDATA", attrValue1);
        attrs.addAttribute("", "", attrName2, "CDATA", attrValue2);

        startElement("", "", elementName, attrs);
    }

    /**
     * 创建一个XML element。
     *
     * @param elementName element名
     * @param bodyText    element值
     * @throws SAXException SAX异常
     */
    public void processElement(String elementName, String bodyText) throws SAXException {
        if (StringUtil.isEmpty(bodyText)) {
            return;
        }

        startElement("", "", elementName, new AttributesImpl());
        characters(bodyText.toCharArray(), 0, bodyText.length());
        endElement("", "", elementName);
    }

    /**
     * 结束一个XML element。
     *
     * @param elementName element名
     * @throws SAXException SAX异常
     */
    public void endElement(String elementName) throws SAXException {
        endElement("", "", elementName);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy