📄 outputformat.java
字号:
* Sets the encoding for this output method with an <code>EncodingInfo</code> * instance. */ public void setEncoding(EncodingInfo encInfo) { _encoding = encInfo.getName(); _encodingInfo = encInfo; } /** * Returns an <code>EncodingInfo<code> instance for the encoding. * * @see #setEncoding(String) */ public EncodingInfo getEncodingInfo() { if (_encodingInfo == null) _encodingInfo = Encodings.getEncodingInfo(_encoding); return _encodingInfo; } /** * Returns the specified media type, or null. * To determine the media type based on the * document type, use {@link #whichMediaType}. * * @return The specified media type, or null */ public String getMediaType() { return _mediaType; } /** * Sets the media type. * * @see #getMediaType * @param mediaType The specified media type */ public void setMediaType( String mediaType ) { _mediaType = mediaType; } /** * Sets the document type public and system identifiers. * Required only if the DOM Document or SAX events do not * specify the document type, and one must be present in * the serialized document. Any document type specified * by the DOM Document or SAX events will override these * values. * * @param publicId The public identifier, or null * @param systemId The system identifier, or null */ public void setDoctype( String publicId, String systemId ) { _doctypePublic = publicId; _doctypeSystem = systemId; } /** * Returns the specified document type public identifier, * or null. */ public String getDoctypePublic() { return _doctypePublic; } /** * Returns the specified document type system identifier, * or null. */ public String getDoctypeSystem() { return _doctypeSystem; } /** * Returns true if comments should be ommited. * The default is false. */ public boolean getOmitComments() { return _omitComments; } /** * Sets comment omitting on and off. * * @param omit True if comments should be ommited */ public void setOmitComments( boolean omit ) { _omitComments = omit; } /** * Returns true if the DOCTYPE declaration should * be ommited. The default is false. */ public boolean getOmitDocumentType() { return _omitDoctype; } /** * Sets DOCTYPE declaration omitting on and off. * * @param omit True if DOCTYPE declaration should be ommited */ public void setOmitDocumentType( boolean omit ) { _omitDoctype = omit; } /** * Returns true if the XML document declaration should * be ommited. The default is false. */ public boolean getOmitXMLDeclaration() { return _omitXmlDeclaration; } /** * Sets XML declaration omitting on and off. * * @param omit True if XML declaration should be ommited */ public void setOmitXMLDeclaration( boolean omit ) { _omitXmlDeclaration = omit; } /** * Returns true if the document type is standalone. * The default is false. */ public boolean getStandalone() { return _standalone; } /** * Sets document DTD standalone. The public and system * identifiers must be null for the document to be * serialized as standalone. * * @param standalone True if document DTD is standalone */ public void setStandalone( boolean standalone ) { _standalone = standalone; } /** * Returns a list of all the elements whose text node children * should be output as CDATA, or null if no such elements were * specified. */ public String[] getCDataElements() { return _cdataElements; } /** * Returns true if the text node children of the given elements * should be output as CDATA. * * @param tagName The element's tag name * @return True if should serialize as CDATA */ public boolean isCDataElement( String tagName ) { int i; if ( _cdataElements == null ) return false; for ( i = 0 ; i < _cdataElements.length ; ++i ) if ( _cdataElements[ i ].equals( tagName ) ) return true; return false; } /** * Sets the list of elements for which text node children * should be output as CDATA. * * @param cdataElements List of CDATA element tag names */ public void setCDataElements( String[] cdataElements ) { _cdataElements = cdataElements; } /** * Returns a list of all the elements whose text node children * should be output unescaped (no character references), or null * if no such elements were specified. */ public String[] getNonEscapingElements() { return _nonEscapingElements; } /** * Returns true if the text node children of the given elements * should be output unescaped. * * @param tagName The element's tag name * @return True if should serialize unescaped */ public boolean isNonEscapingElement( String tagName ) { int i; if ( _nonEscapingElements == null ) return false; for ( i = 0 ; i < _nonEscapingElements.length ; ++i ) if ( _nonEscapingElements[ i ].equals( tagName ) ) return true; return false; } /** * Sets the list of elements for which text node children * should be output unescaped (no character references). * * @param nonEscapingElements List of unescaped element tag names */ public void setNonEscapingElements( String[] nonEscapingElements ) { _nonEscapingElements = nonEscapingElements; } /** * Returns a specific line separator to use. The default is the * Web line separator (<tt>\n</tt>). A string is returned to * support double codes (CR + LF). * * @return The specified line separator */ public String getLineSeparator() { return _lineSeparator; } /** * Sets the line separator. The default is the Web line separator * (<tt>\n</tt>). The machine's line separator can be obtained * from the system property <tt>line.separator</tt>, but is only * useful if the document is edited on machines of the same type. * For general documents, use the Web line separator. * * @param lineSeparator The specified line separator */ public void setLineSeparator( String lineSeparator ) { if ( lineSeparator == null ) _lineSeparator = LineSeparator.Web; else _lineSeparator = lineSeparator; } /** * Returns true if the default behavior for this format is to * preserve spaces. All elements that do not specify otherwise * or specify the default behavior will be formatted based on * this rule. All elements that specify space preserving will * always preserve space. */ public boolean getPreserveSpace() { return _preserve; } /** * Sets space preserving as the default behavior. The default is * space stripping and all elements that do not specify otherwise * or use the default value will not preserve spaces. * * @param preserve True if spaces should be preserved */ public void setPreserveSpace( boolean preserve ) { _preserve = preserve; } /** * Return the selected line width for breaking up long lines. * When indenting, and only when indenting, long lines will be * broken at space boundaries based on this line width. * No line wrapping occurs if this value is zero. */ public int getLineWidth() { return _lineWidth; } /** * Sets the line width. If zero then no line wrapping will * occur. Calling {@link #setIndenting} will reset this * value to zero (off) or the default (on). * * @param lineWidth The line width to use, zero for default * @see #getLineWidth * @see #setIndenting */ public void setLineWidth( int lineWidth ) { if ( lineWidth <= 0 ) _lineWidth = 0; else _lineWidth = lineWidth; } /** * Returns the last printable character based on the selected * encoding. Control characters and non-printable characters * are always printed as character references. */ public char getLastPrintable() { if ( getEncoding() != null && ( getEncoding().equalsIgnoreCase( "ASCII" ) ) ) return 0xFF; else return 0xFFFF; } /** * Determine the output method for the specified document. * If the document is an instance of {@link org.w3c.dom.html.HTMLDocument} * then the method is said to be <tt>html</tt>. If the root * element is 'html' and all text nodes preceding the root * element are all whitespace, then the method is said to be * <tt>html</tt>. Otherwise the method is <tt>xml</tt>. * * @param doc The document to check * @return The suitable method */ public static String whichMethod( Document doc ) { Node node; String value; int i; // If document is derived from HTMLDocument then the default // method is html. if ( doc instanceof HTMLDocument ) return Method.HTML; // Lookup the root element and the text nodes preceding it. // If root element is html and all text nodes contain whitespace // only, the method is html. // FIXME (SM) should we care about namespaces here? node = doc.getFirstChild(); while (node != null) { // If the root element is html, the method is html. if ( node.getNodeType() == Node.ELEMENT_NODE ) { if ( node.getNodeName().equalsIgnoreCase( "html" ) ) { return Method.HTML; } else if ( node.getNodeName().equalsIgnoreCase( "root" ) ) { return Method.FOP; } else { return Method.XML; } } else if ( node.getNodeType() == Node.TEXT_NODE ) { // If a text node preceding the root element contains // only whitespace, this might be html, otherwise it's // definitely xml. value = node.getNodeValue(); for ( i = 0 ; i < value.length() ; ++i ) if ( value.charAt( i ) != 0x20 && value.charAt( i ) != 0x0A && value.charAt( i ) != 0x09 && value.charAt( i ) != 0x0D ) return Method.XML; } node = node.getNextSibling(); } // Anything else, the method is xml. return Method.XML; } /** * Returns the document type public identifier * specified for this document, or null. */ public static String whichDoctypePublic( Document doc ) { DocumentType doctype; /* DOM Level 2 was introduced into the code base*/ doctype = doc.getDoctype(); if ( doctype != null ) { // Note on catch: DOM Level 1 does not specify this method // and the code will throw a NoSuchMethodError try { return doctype.getPublicId(); } catch ( Error except ) { } } if ( doc instanceof HTMLDocument ) return DTD.XHTMLPublicId; return null; } /** * Returns the document type system identifier * specified for this document, or null. */ public static String whichDoctypeSystem( Document doc ) { DocumentType doctype; /* DOM Level 2 was introduced into the code base*/ doctype = doc.getDoctype(); if ( doctype != null ) { // Note on catch: DOM Level 1 does not specify this method // and the code will throw a NoSuchMethodError try { return doctype.getSystemId(); } catch ( Error except ) { } } if ( doc instanceof HTMLDocument ) return DTD.XHTMLSystemId; return null; } /** * Returns the suitable media format for a document * output with the specified method. */ public static String whichMediaType( String method ) { if ( method.equalsIgnoreCase( Method.XML ) ) return "text/xml"; if ( method.equalsIgnoreCase( Method.HTML ) ) return "text/html"; if ( method.equalsIgnoreCase( Method.XHTML ) ) return "text/html"; if ( method.equalsIgnoreCase( Method.TEXT ) ) return "text/plain"; if ( method.equalsIgnoreCase( Method.FOP ) ) return "application/pdf"; return null; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -