Java Tutorial/JSP/XML
Содержание
DOM Parser In JSP
Jsp code
<source lang="java">
<%@ page import="javax.xml.parsers.*, org.xml.sax.*, org.xml.sax.helpers.*, org.w3c.dom.*, java.io.*"
%>
<%! public class xparser {
String displayStrings[] = new String[1000]; int numberDisplayLines = 0; public String[] displayDocument(String uri) { try { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = null; try { db = dbf.newDocumentBuilder(); } catch (ParserConfigurationException pce) {} Document document = null; document = db.parse(uri); numberDisplayLines = 0; display(document, ""); } catch (Exception e) { e.printStackTrace(System.err); } return displayStrings; } public void display(Node node, String indent) { if (node == null) { return; } int type = node.getNodeType(); switch (type) { case Node.DOCUMENT_NODE: { displayStrings[numberDisplayLines] = indent; displayStrings[numberDisplayLines] += "<?xml version=\"1.0\" encoding=\""+ "UTF-8" + "\"?>"; numberDisplayLines++; display(((Document)node).getDocumentElement(), ""); break; } case Node.ELEMENT_NODE: { displayStrings[numberDisplayLines] = indent; displayStrings[numberDisplayLines] += "<"; displayStrings[numberDisplayLines] += node.getNodeName(); int length = (node.getAttributes() != null) ? node.getAttributes().getLength() : 0; Attr attributes[] = new Attr[length]; for (int i = 0; i < length; i++) { attributes[i] = (Attr)node.getAttributes().item(i); } for (int i = 0; i < attributes.length; i++) { Attr attribute = attributes[i]; displayStrings[numberDisplayLines] += " "; displayStrings[numberDisplayLines] += attribute.getNodeName(); displayStrings[numberDisplayLines] += "=\""; displayStrings[numberDisplayLines] += attribute.getNodeValue(); displayStrings[numberDisplayLines] += "\""; } displayStrings[numberDisplayLines] += ">"; numberDisplayLines++; NodeList childNodes = node.getChildNodes(); if (childNodes != null) { length = childNodes.getLength(); indent += " "; for (int i = 0; i < length; i++ ) { display(childNodes.item(i), indent); } } break; } case Node.CDATA_SECTION_NODE: { displayStrings[numberDisplayLines] = indent; displayStrings[numberDisplayLines] += "<![CDATA["; displayStrings[numberDisplayLines] += node.getNodeValue(); displayStrings[numberDisplayLines] += "]]>"; numberDisplayLines++; break; } case Node.TEXT_NODE: { displayStrings[numberDisplayLines] = indent; String newText = node.getNodeValue().trim(); if(newText.indexOf("\n") < 0 && newText.length() > 0) { displayStrings[numberDisplayLines] += newText; numberDisplayLines++; } break; } case Node.PROCESSING_INSTRUCTION_NODE: { displayStrings[numberDisplayLines] = indent; displayStrings[numberDisplayLines] += "<?"; displayStrings[numberDisplayLines] += node.getNodeName(); String text = node.getNodeValue(); if (text != null && text.length() > 0) { displayStrings[numberDisplayLines] += text; } displayStrings[numberDisplayLines] += "?>"; numberDisplayLines++; break; } } if (type == Node.ELEMENT_NODE) { displayStrings[numberDisplayLines] = indent.substring(0, indent.length() - 24); displayStrings[numberDisplayLines] += "</"; displayStrings[numberDisplayLines] += node.getNodeName(); displayStrings[numberDisplayLines] += ">"; numberDisplayLines++; indent += " "; } }
} %> <HTML>
<HEAD> <TITLE>Parsing an XML Document With DOM</TITLE> </HEAD> <BODY>
Parsing an XML Document With DOM
<% xparser p = new xparser(); String[] s = p.displayDocument(application.getRealPath("/") + "test.xml"); for(int i = 0; i < s.length; i++){ if(s[i] != null){ %> <%= s[i] %>
<% } } %> </BODY>
</HTML></source>
JSP SAX Parser
Jsp code
<source lang="java">
<%@ page import="org.xml.sax.*, org.xml.sax.helpers.DefaultHandler, javax.xml.parsers.*, java.io.*" %> <%! javax.servlet.jsp.JspWriter localOut; public class parser extends DefaultHandler {
String indent = ""; void parse(String name) { DefaultHandler handler = this; SAXParserFactory factory = SAXParserFactory.newInstance(); try { SAXParser saxParser = factory.newSAXParser(); saxParser.parse(new File(name), handler); } catch (Throwable t) {} } public void startDocument() throws SAXException { try{ localOut.println("<?xml version=\"1.0\" encoding=\""+"UTF-8" + "\"?>
"); } catch(java.io.IOException e){} } public void endDocument() throws SAXException { } public void startElement(String namespaceURI, String localName, String qualifiedName, Attributes attrs) throws SAXException { try{ String elementName = localName; if ("".equals(elementName)) { elementName = qualifiedName; } localOut.println(indent + "<" + elementName); if (attrs != null) { for (int i = 0; i < attrs.getLength(); i++) { String attributeName = attrs.getLocalName(i); if ("".equals(attributeName)) attributeName = attrs.getQName(i); localOut.println(attributeName + "="); localOut.println("\"" + attrs.getValue(i) + "\""); } } localOut.println(">
"); indent += " "; } catch(java.io.IOException e){} } public void endElement(String namespaceURI, String localName, String qualifiedName) throws SAXException { try{ String elementName = localName; if ("".equals(elementName)) { elementName = qualifiedName; } indent = indent.substring(0, indent.length() - 24); localOut.println(indent + "</" + elementName + ">"); localOut.println("
"); } catch(java.io.IOException e){} } public void characters(char buf[], int offset, int len) throws SAXException { try{ String s = new String(buf, offset, len); if (!s.trim().equals("")) { localOut.println(indent + " " + s); localOut.println("
"); } } catch(java.io.IOException e){} }
} %> <HTML>
<HEAD> <TITLE>Parsing an XML Document with SAX</TITLE> </HEAD> <BODY>
Parsing an XML Document with SAX
<% localOut = out; parser p = new parser(); p.parse(application.getRealPath("/") + "test.xml"); %> </BODY>
</HTML></source>