import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import javax.xml.transform.TransformerException;
import org.apache.log4j.Logger;
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import com.sun.org.apache.xpath.internal.XPathAPI;
/**
* 处理XML的封装类
*/
public abstract class XmlHelper {
private XmlHelper() {
}
private static SimpleXmlParser parser = new SimpleXmlParser();
private static Logger logger = Logger.getLogger(XmlHelper.class.getName());
public static Document getDocument(String xmlStr) throws Exception {
try {
return parser.parseXml(xmlStr);
} catch (Exception ex) {
logger.error("得到Document出错-->", ex);
throw ex;
}
}
public static Document getDocumentFormStream(InputStream s)
throws Exception {
try {
Document doc = parser.parse(s);
return doc;
} catch (Exception ex) {
logger.error("从文件流中得到Document出现错误,错误为-->", ex);
throw ex;
}
}
public static Document getDocumentFormFile(String url) {
try {
URL u = new URL(url);
URLConnection connection = u.openConnection();
connection.setDoInput(true);
connection.setUseCaches(false);
Document doc = parser.parse(url);
connection.getInputStream()。close();
return doc;
} catch (Exception ex) {
logger.info("从url中取得数据出错,错误为-->", ex);
}
return null;
}
public static NodeList selectNodeList(Node node, String xpath)
throws TransformerException {
try {
return XPathAPI.selectNodeList(node, xpath);
} catch (TransformerException ex) {
logger.error("得到xml节点队列出错-->", ex);
throw ex;
}
}
public static Node selectSingleNode(Node node, String xpath)
throws TransformerException {
try {
return XPathAPI.selectSingleNode(node, xpath);
} catch (TransformerException ex) {
logger.error("得到单一的xml节点出错-->", ex);
throw ex;
}
}
public static Node selectNode(Node node, String xpath) {
for (int i = 0; i < node.getChildNodes()。getLength(); i++) {
Node childNode = node.getChildNodes()。item(i);
if (childNode.getNodeType() == Node.ELEMENT_NODE
&& childNode.getNodeName()。equals(xpath))
return childNode;
}
return null;
}