All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.hfg.html.HTMLFragment Maven / Gradle / Ivy

There is a newer version: 20240423
Show newest version
package com.hfg.html;

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import com.hfg.util.StringBuilderPlus;
import com.hfg.util.collection.CollectionUtil;
import com.hfg.xml.XMLException;
import com.hfg.xml.parser.SaxyParser;

//------------------------------------------------------------------------------
/**
 Represents an HTML fragment.
 
@author J. Alex Taylor, hairyfatguy.com
*/ //------------------------------------------------------------------------------ // com.hfg XML/HTML Coding Library // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // J. Alex Taylor, President, Founder, CEO, COO, CFO, OOPS hairyfatguy.com // [email protected] //------------------------------------------------------------------------------ public class HTMLFragment { private List mRootNodes; //########################################################################### // CONSTRUCTORS //########################################################################### //--------------------------------------------------------------------------- public HTMLFragment() { super(); init(); } //--------------------------------------------------------------------------- public HTMLFragment(HTMLTag inRootTag) { addRootNode(inRootTag); } //--------------------------------------------------------------------------- public HTMLFragment(BufferedReader inReader) { try { init(inReader); } catch (Exception e) { throw new XMLException(e); } } //--------------------------------------------------------------------------- public HTMLFragment(BufferedInputStream inStream) { try { BufferedReader reader = new BufferedReader(new InputStreamReader(inStream)); init(reader); } catch (Exception e) { throw new XMLException(e); } } //--------------------------------------------------------------------------- private void init() { } //--------------------------------------------------------------------------- private void init(BufferedReader inReader) { try { try { HTMLTagReader tagReader = getTagReader(); tagReader.parse(inReader); mRootNodes = tagReader.getRootNodes(); } finally { if (inReader != null) { inReader.close(); } } } catch (IOException e) { throw new XMLException(e); } } //########################################################################### // PUBLIC METHODS //########################################################################### //--------------------------------------------------------------------------- public void addRootNode(HTMLNode inRootNode) { if (null == mRootNodes) { mRootNodes = new ArrayList<>(3); } mRootNodes.add(inRootNode); } //--------------------------------------------------------------------------- public List getRootNodes() { return mRootNodes; } //--------------------------------------------------------------------------- public String toHTML() { StringBuilderPlus buffer = new StringBuilderPlus(); if (CollectionUtil.hasValues(getRootNodes())) { for (HTMLNode node : (List) (Object) getRootNodes()) { buffer.append(node.toHTML()); } } return buffer.toString(); } //-------------------------------------------------------------------------- protected HTMLTagReader getTagReader() { HTMLTagReader tagReader = new HTMLTagReader(); if (tagReader.getParser() instanceof SaxyParser) { ((SaxyParser) tagReader.getParser()).setLenientHTMLParsing(true); } return tagReader; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy