⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 parsedhtml.java

📁 这是远程web服务调用的一个包,可以将JSP直接作为服务
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
                Object o = i.next();                if (o instanceof ParsedHTML) ((ParsedHTML) o).addToList( htmlElement );            }        }        protected void addToMaps( NodeUtils.PreOrderTraversal pot, Node node, HTMLElement htmlElement ) {            for (Iterator i = pot.getContexts(); i.hasNext();) {                Object o = i.next();                if (o instanceof ParsedHTML) ((ParsedHTML) o).addToMaps( node, htmlElement );            }        }    }    abstract static class HTMLElementFactory extends HtmlElementRecorder {        abstract HTMLElement toHTMLElement( NodeUtils.PreOrderTraversal pot, ParsedHTML parsedHTML, Element element );        void recordElement( NodeUtils.PreOrderTraversal pot, Element element, ParsedHTML parsedHTML ) {            HTMLElement htmlElement = toHTMLElement( pot, parsedHTML, element );            recordHtmlElement( pot, element, htmlElement );        }        protected boolean isRecognized( ClientProperties properties ) { return true; }        protected boolean addToContext() { return false; }        final protected ParsedHTML getParsedHTML( NodeUtils.PreOrderTraversal pot ) {            return (ParsedHTML) getClosestContext( pot, ParsedHTML.class );        }        final protected Object getClosestContext( NodeUtils.PreOrderTraversal pot, Class aClass ) {            return pot.getClosestContext( aClass );        }        protected ParsedHTML getRootContext( NodeUtils.PreOrderTraversal pot ) {            return (ParsedHTML) pot.getRootContext();        }    }    static class DefaultElementFactory extends HTMLElementFactory {        HTMLElement toHTMLElement( NodeUtils.PreOrderTraversal pot, ParsedHTML parsedHTML, Element element ) {            if (element.getAttribute( "id" ).equals( "" )) return null;            return parsedHTML.toDefaultElement( element );        }        protected void addToLists( NodeUtils.PreOrderTraversal pot, HTMLElement htmlElement ) {}    }    private HTMLElement toDefaultElement( Element element ) {        return new HTMLElementBase( element ) {            protected ScriptableDelegate newScriptable() { return new HTMLElementScriptable( this ); }            protected ScriptableDelegate getParentDelegate() { return getResponse().getScriptableObject().getDocument(); }        };    }    static class WebFormFactory extends HTMLElementFactory {        HTMLElement toHTMLElement( NodeUtils.PreOrderTraversal pot, ParsedHTML parsedHTML, Element element ) {            return parsedHTML.toWebForm( element );        }        protected void addToLists( NodeUtils.PreOrderTraversal pot, HTMLElement htmlElement ) {            super.addToLists( pot, htmlElement );            getRootContext( pot )._activeForm = (WebForm) htmlElement;        }    }    static class WebLinkFactory extends HTMLElementFactory {        HTMLElement toHTMLElement( NodeUtils.PreOrderTraversal pot, ParsedHTML parsedHTML, Element element ) {            return parsedHTML.toLinkAnchor( element );        }    }    static class TextBlockFactory extends HTMLElementFactory {        HTMLElement toHTMLElement( NodeUtils.PreOrderTraversal pot, ParsedHTML parsedHTML, Element element ) {            return parsedHTML.toTextBlock( element );        }        protected boolean addToContext() {            return true;        }        protected void addToLists( NodeUtils.PreOrderTraversal pot, HTMLElement htmlElement ) {            for (Iterator i = pot.getContexts(); i.hasNext();) {                Object o = i.next();                if (!(o instanceof ParsedHTML)) continue;                ((ParsedHTML) o).addToList( htmlElement );                break;            }        }    }    static class ScriptFactory extends HTMLElementFactory {        HTMLElement toHTMLElement( NodeUtils.PreOrderTraversal pot, ParsedHTML parsedHTML, Element element ) {            return null;        }        void recordElement( NodeUtils.PreOrderTraversal pot, Element element, ParsedHTML parsedHTML ) {            parsedHTML.interpretScriptElement( element );        }    }    static class NoScriptFactory extends HTMLElementFactory {        HTMLElement toHTMLElement( NodeUtils.PreOrderTraversal pot, ParsedHTML parsedHTML, Element element ) {            return parsedHTML.toNoscriptElement( element );        }        protected boolean addToContext() {            return true;        }    }    static class WebFrameFactory extends HTMLElementFactory {        HTMLElement toHTMLElement( NodeUtils.PreOrderTraversal pot, ParsedHTML parsedHTML, Element element ) {            return parsedHTML.toWebFrame( element );        }    }    static class WebIFrameFactory extends HTMLElementFactory {        HTMLElement toHTMLElement( NodeUtils.PreOrderTraversal pot, ParsedHTML parsedHTML, Element element ) {            return parsedHTML.toWebIFrame( element );        }        protected boolean isRecognized( ClientProperties properties ) {            return properties.isIframeSupported();        }        protected boolean addToContext() {            return true;        }    }    static class WebImageFactory extends HTMLElementFactory {        HTMLElement toHTMLElement( NodeUtils.PreOrderTraversal pot, ParsedHTML parsedHTML, Element element ) {            return parsedHTML.toWebImage( element );        }    }    static class WebAppletFactory extends HTMLElementFactory {        HTMLElement toHTMLElement( NodeUtils.PreOrderTraversal pot, ParsedHTML parsedHTML, Element element ) {            return parsedHTML.toWebApplet( element );        }        protected boolean addToContext() { return true; }    }    static class WebTableFactory extends HTMLElementFactory {        HTMLElement toHTMLElement( NodeUtils.PreOrderTraversal pot, ParsedHTML parsedHTML, Element element ) {            return parsedHTML.toWebTable( element );        }        protected boolean addToContext() { return true; }        protected void addToLists( NodeUtils.PreOrderTraversal pot, HTMLElement htmlElement ) {            for (Iterator i = pot.getContexts(); i.hasNext();) {                Object o = i.next();                if (o instanceof ParsedHTML) ((ParsedHTML) o).addToList( htmlElement );                if (o instanceof TableCell) break;            }        }    }    static class TableRowFactory extends HTMLElementFactory {        HTMLElement toHTMLElement( NodeUtils.PreOrderTraversal pot, ParsedHTML parsedHTML, Element element ) {            WebTable wt = getWebTable( pot );            if (wt == null) return null;            return wt.newTableRow( element );        }        private WebTable getWebTable( NodeUtils.PreOrderTraversal pot ) {            return (WebTable) getClosestContext( pot, WebTable.class );        }        protected boolean addToContext() { return true; }        protected void addToLists( NodeUtils.PreOrderTraversal pot, HTMLElement htmlElement ) {            getWebTable( pot ).addRow( (TableRow) htmlElement );        }    }    static class TableCellFactory extends HTMLElementFactory {        HTMLElement toHTMLElement( NodeUtils.PreOrderTraversal pot, ParsedHTML parsedHTML, Element element ) {            TableRow tr = getTableRow( pot );            if (tr == null) return null;            return tr.newTableCell( element );        }        private TableRow getTableRow( NodeUtils.PreOrderTraversal pot ) {            return (TableRow) getClosestContext( pot, TableRow.class );        }        protected boolean addToContext() { return true; }        protected void addToLists( NodeUtils.PreOrderTraversal pot, HTMLElement htmlElement ) {            getTableRow( pot ).addTableCell( (TableCell) htmlElement );        }    }    static class FormControlFactory extends HTMLElementFactory {        HTMLElement toHTMLElement( NodeUtils.PreOrderTraversal pot, ParsedHTML parsedHTML, Element element ) {            final WebForm form = getForm( pot );            return form == null ? newControlWithoutForm( parsedHTML, element ) : form.newFormControl( element );        }        private HTMLElement newControlWithoutForm( ParsedHTML parsedHTML, Element element ) {            if ((element.getNodeName().equalsIgnoreCase( "button" ) || element.getNodeName().equalsIgnoreCase( "input" )) &&                    isValidNonFormButtonType( NodeUtils.getNodeAttribute( element, "type" ) )) {                return parsedHTML.toButtonWithoutForm( element );            } else {                return null;            }        }        private boolean isValidNonFormButtonType( String buttonType ) {            return buttonType.equals( "" ) || buttonType.equalsIgnoreCase( "button" );        }        private WebForm getForm( NodeUtils.PreOrderTraversal pot ) {            return getRootContext( pot )._activeForm;        }        protected void addToLists( NodeUtils.PreOrderTraversal pot, HTMLElement htmlElement ) {            WebForm form = getForm( pot );            if (form != null) form.addFormControl( (FormControl) htmlElement );        }    }    static class WebListFactory extends HTMLElementFactory {        HTMLElement toHTMLElement( NodeUtils.PreOrderTraversal pot, ParsedHTML parsedHTML, Element element ) {            return parsedHTML.toOrderedList( element );        }        protected boolean addToContext() { return true; }        protected void addToLists( NodeUtils.PreOrderTraversal pot, HTMLElement htmlElement ) {            TextBlock textBlock = getTextBlock( pot );            if (textBlock != null) textBlock.addList( (WebList) htmlElement );        }        private TextBlock getTextBlock( NodeUtils.PreOrderTraversal pot ) {            return (TextBlock) getClosestContext( pot, TextBlock.class );        }    }    static class ListItemFactory extends HTMLElementFactory {        HTMLElement toHTMLElement( NodeUtils.PreOrderTraversal pot, ParsedHTML parsedHTML, Element element ) {            WebList webList = getWebList( pot );            if (webList == null) return null;            return webList.addNewItem( element );        }        private WebList getWebList( NodeUtils.PreOrderTraversal pot ) {            return (WebList) getClosestContext( pot, WebList.class );        }        protected boolean addToContext() { return true; }        protected void addToLists( NodeUtils.PreOrderTraversal pot, HTMLElement htmlElement ) {        }    }    private static HashMap _htmlFactoryClasses = new HashMap();    private static HTMLElementFactory _defaultFactory = new DefaultElementFactory();    static {        _htmlFactoryClasses.put( "a",        new WebLinkFactory() );        _htmlFactoryClasses.put( "area",     new WebLinkFactory() );        _htmlFactoryClasses.put( "form",     new WebFormFactory() );        _htmlFactoryClasses.put( "img",      new WebImageFactory() );        _htmlFactoryClasses.put( "applet",   new WebAppletFactory() );        _htmlFactoryClasses.put( "table",    new WebTableFactory() );        _htmlFactoryClasses.put( "tr",       new TableRowFactory() );        _htmlFactoryClasses.put( "td",       new TableCellFactory() );        _htmlFactoryClasses.put( "th",       new TableCellFactory() );        _htmlFactoryClasses.put( "frame",    new WebFrameFactory() );        _htmlFactoryClasses.put( "iframe",   new WebIFrameFactory() );        _htmlFactoryClasses.put( "script",   new ScriptFactory() );        _htmlFactoryClasses.put( "noscript", new NoScriptFactory() );        _htmlFactoryClasses.put( "ol",       new WebListFactory() );        _htmlFactoryClasses.put( "ul",       new WebListFactory() );        _htmlFactoryClasses.put( "li",       new ListItemFactory() );        for (int i = 0; i < TEXT_ELEMENTS.length; i++) {            _htmlFactoryClasses.put( TEXT_ELEMENTS[i], new TextBlockFactory() );        }        for (Iterator i = Arrays.asList( FormControl.getControlElementTags() ).iterator(); i.hasNext();) {            _htmlFactoryClasses.put( i.next(), new FormControlFactory() );        }    }    private static HTMLElementFactory getHTMLElementFactory( String tagName ) {        final HTMLElementFactory factory = (HTMLElementFactory) _htmlFactoryClasses.get( tagName );        return factory != null ? factory : _defaultFactory;    }    private void loadElements() {        if (!_updateElements) return;        NodeUtils.NodeAction action = new NodeUtils.NodeAction() {            public boolean processElement( NodeUtils.PreOrderTraversal pot, Element element ) {                HTMLElementFactory factory = getHTMLElementFactory( element.getNodeName().toLowerCase() );                if (factory == null || !factory.isRecognized( getClientProperties() )) return true;                if (pot.getClosestContext( ContentConcealer.class ) != null) return true;                if (!_elements.containsKey( element )) factory.recordElement( pot, element, ParsedHTML.this );                if (factory.addToContext()) pot.pushContext( _elements.get( element ) );                return true;            }            public void processTextNode( NodeUtils.PreOrderTraversal pot, Node textNode ) {                if (textNode.getNodeValue().trim().length() == 0) return;                Node parent = textNode.getParentNode();                if (!parent.getNodeName().equalsIgnoreCase( "body" )) return;                if (pot.getClosestContext( ContentConcealer.class ) != null) return;                new HtmlElementRecorder().recordHtmlElement( pot, textNode, newTextBlock( textNode ) );            }        };        NodeUtils.PreOrderTraversal nt = new NodeUtils.PreOrderTraversal( getRootNode() );        nt.pushBaseContext( this );        nt.perform( action );        _updateElements = false;    }    private ClientProperties getClientProperties() {        WebWindow window = _response.getWindow();        return window == null ? ClientProperties.getDefaultProperties() : window.getClient().getClientProperties();    }    private Button toButtonWithoutForm( Element element ) {        return new Button( _response, element );    }    private WebForm toWebForm( Element element ) {        return new WebForm( _response, _baseURL, element, _frame, _baseTarget, _characterSet );    }    private WebFrame toWebFrame( Element element ) {        return new WebFrame( _response, _baseURL, element, _frame );    }    private WebFrame toWebIFrame( Element element ) {        return new WebIFrame( _baseURL, element, _frame );    }    private WebLink toLinkAnchor( Element child ) {        return (!isWebLink( child )) ? null : new WebLink( _response, _baseURL, child, _frame, _baseTarget, _characterSet );    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -