/** Sets a property. */ public void setProperty(String propertyId, Object value) throws XMLConfigurationException { super.setProperty(propertyId, value); if (propertyId.equals(FILTERS)) { XMLDocumentFilter[] filters = (XMLDocumentFilter[])getProperty(FILTERS); if (filters != null) { for (int i = 0; i < filters.length; i++) { XMLDocumentFilter filter = filters[i]; if (filter instanceof HTMLComponent) { addComponent((HTMLComponent)filter); } } } } int size = fHTMLComponents.size(); for (int i = 0; i < size; i++) { HTMLComponent component = (HTMLComponent)fHTMLComponents.elementAt(i); component.setProperty(propertyId, value); } } // setProperty(String,Object)
/** Sets a property. */ public void setProperty(String propertyId, Object value) throws XMLConfigurationException { super.setProperty(propertyId, value); if (propertyId.equals(FILTERS)) { XMLDocumentFilter[] filters = (XMLDocumentFilter[])getProperty(FILTERS); if (filters != null) { for (int i = 0; i < filters.length; i++) { XMLDocumentFilter filter = filters[i]; if (filter instanceof HTMLComponent) { addComponent((HTMLComponent)filter); } } } } int size = fHTMLComponents.size(); for (int i = 0; i < size; i++) { HTMLComponent component = (HTMLComponent)fHTMLComponents.elementAt(i); component.setProperty(propertyId, value); } } // setProperty(String,Object)
addComponent(fDocumentScanner); addComponent(fTagBalancer); addComponent(fNamespaceBinder);
addComponent(fDocumentScanner); addComponent(fTagBalancer); addComponent(fNamespaceBinder);
public TemplateParserConfiguration(HTMLScanner scanner, String templateDefaultCharset, boolean balanceTag) { AdditionalHandlerFilter starter = new AdditionalHandlerFilter(); addComponent(starter); setProperty(TemplateScanner.HTML_NAMES_ELEMS, "match"); setProperty(TemplateScanner.HTML_NAMES_ATTRS, "no-change"); /* テンプレート上にエンコーディング指定がなければUTF-8と見なす */ setProperty(TemplateScanner.HTML_DEFAULT_ENCODING, templateDefaultCharset); setProperty(TemplateScanner.FILTERS, new XMLDocumentFilter[] { starter }); /* 元のテンプレート内容を忠実に再現させるオプション。 * ただし、</html>の後ろは無視される。false(デフォルト)の場合は、 * </body>と</html>の後につづくものをnekoがむりやり前に持ってくる */ setFeature(IGNORE_OUTSIDE_CONTENT, true); /* <html>や<body>が無い場合もそのままにするオプション。 * これが無いと勝手に付与されてしまう。 */ setFeature(DOCUMENT_FRAGMENT, true); /* HTMLの省略可能な閉じタグなどを自動的に付与するオプション。 * これをfalseにするべきではないが、HTML5の場合にはaタグがblock要素になっているが * NekoHTMLはinlineとして見てしまうため意図しない動きをするため、HTMLのバランスを * 作成者側で保証することとしてfalseにする。 */ setFeature(BALANCE_TAGS, balanceTag); fDocumentScanner = scanner; fDocumentScanner.reset(this); }