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

📄 xbookmarkdefaultserializer.java

📁 XBrowser是一个完全免费并且开源的Web浏览器
💻 JAVA
字号:
/****************************************************************
*              XBrowser  -  eXtended web Browser                *
*                                                               *
*           Copyright (c) 2000-2001  Armond Avanes              *
*     Refer to ReadMe & License files for more information      *
*                                                               *
*                                                               *
*                      By: Armond Avanes                        *
*       Armond555@yahoo.com     &    Armond333@yahoo.com        *
*                http://xbrowser.sourceforge.net/               *
*****************************************************************/
package xbrowser.bookmark.io;

import java.io.*;
import java.net.*;
import java.util.*;

import xbrowser.*;
import xbrowser.util.*;
import xbrowser.bookmark.*;

import org.w3c.dom.*;

public class XBookmarkDefaultSerializer implements XBookmarkSerializer
{
	public XBookmarkDefaultSerializer()
	{
	}

	public void importFrom(String file_name, XBookmarkFolder root_folder) throws Exception
	{
	URL dtd_url = XRepository.getResourceManager().getResourceURL(DTD_URL);
	Document doc = XMLManager.readFileDocument(file_name, DTD_SYMBOL, dtd_url);
	Node node = XMLManager.findNode(doc,"xbookmarks").getNextSibling().getFirstChild();

		while( node!=null )
		{
			if( node instanceof Element )
			{
				if( node.getNodeName().equals("xfolder") )
					loadBookmarkFolder(node,root_folder);
				else if( node.getNodeName().equals("xbookmark") )
					loadBookmark(node,root_folder);
			}

			node = node.getNextSibling();
		}
	}

	private void loadBookmarkFolder(Node node, XBookmarkFolder parent) throws DOMException
	{
	XBookmarkFolder bm_folder = new XBookmarkFolder();
	Node temp_node = node;

		temp_node = node.getFirstChild();
		while( temp_node!=null )
		{
			if( temp_node instanceof Element )
			{
				if( temp_node.getNodeName().equals("title") )
					bm_folder.setTitle( XMLManager.getNodeValue(temp_node) );
				else if( temp_node.getNodeName().equals("desc") )
					bm_folder.setDescription( XMLManager.getNodeValue(temp_node) );
				else if( temp_node.getNodeName().equals("creationdate") )
					bm_folder.setCreationDate( buildDate(temp_node) );
				else if( temp_node.getNodeName().equals("modificationdate") )
					bm_folder.setModificationDate( buildDate(temp_node) );
				else if( temp_node.getNodeName().equals("personalfolder") )
					bm_folder.setPersonalFolder(true);
			}

			temp_node = temp_node.getNextSibling();
		}

		parent.addBookmark(bm_folder);

		temp_node = node.getFirstChild();
		while( temp_node!=null )
		{
			if( temp_node instanceof Element )
			{
				if( temp_node.getNodeName().equals("xfolder") )
					loadBookmarkFolder(temp_node,bm_folder);
				else if( temp_node.getNodeName().equals("xbookmark") )
					loadBookmark(temp_node,bm_folder);
			}

			temp_node = temp_node.getNextSibling();
		}
	}

	private void loadBookmark(Node node, XBookmarkFolder parent) throws DOMException
	{
	XBookmark bookmark = new XBookmark( XMLManager.getNodeAttribute(node,"href") );

		node = node.getFirstChild();
		while( node!=null )
		{
			if( node instanceof Element )
			{
				if( node.getNodeName().equals("title") )
					bookmark.setTitle( XMLManager.getNodeValue(node) );
				else if( node.getNodeName().equals("desc") )
					bookmark.setDescription( XMLManager.getNodeValue(node) );
				else if( node.getNodeName().equals("creationdate") )
					bookmark.setCreationDate( buildDate(node) );
				else if( node.getNodeName().equals("modificationdate") )
					bookmark.setModificationDate( buildDate(node) );
			}

			node = node.getNextSibling();
		}

		parent.addBookmark(bookmark);
	}

	private Date buildDate(Node node) throws DOMException
	{
	Date date = null;

        try
        {
	        date = df.parse( XMLManager.getNodeValue(node) );
		}
		catch( Exception e )
		{
			date = new Date();
		}

		return date;
	}

	public void exportTo(String file_name, XBookmarkFolder root_folder) throws Exception
	{
	Document doc = XMLManager.newDocument();
	Element root = (Element)doc.createElement("xbookmarks");

		doc.appendChild(root);

		//// Saving Bookmarks
	Iterator bookmarks = root_folder.getBookmarks();

		while( bookmarks.hasNext() )
			saveBookmarksImpl( (XAbstractBookmark)bookmarks.next(), doc, root);
		//// Bookmarks Saved

		root.normalize();

		XMLManager.writeDocument(file_name, doc, null, DTD_SYMBOL, null);
	}

	private void saveBookmarksImpl(XAbstractBookmark abs_bm, Document doc, Element parent_node)
	{
		if( abs_bm instanceof XBookmark )
			saveBookmark( (XBookmark)abs_bm, doc, parent_node);
		else if( abs_bm instanceof XBookmarkFolder )
			saveBookmarkFolder( (XBookmarkFolder)abs_bm, doc, parent_node);
	}

	private void saveBookmark(XBookmark bookmark, Document doc, Element parent_node)
	{
	Element node = (Element)doc.createElement("xbookmark");

		node.setAttribute("href", bookmark.getHRef() );

		XMLManager.addDataNodeTo(doc, node, "title", bookmark.getTitle());
		XMLManager.addDataNodeTo(doc, node, "desc", bookmark.getDescription());
		XMLManager.addDataNodeTo(doc, node, "creationdate", df.format(bookmark.getCreationDate()));
		XMLManager.addDataNodeTo(doc, node, "modificationdate", df.format(bookmark.getModificationDate()));

		parent_node.appendChild(node);
	}

	private void saveBookmarkFolder(XBookmarkFolder bm_folder, Document doc, Element parent_node)
	{
	Element node = (Element)doc.createElement("xfolder");

		XMLManager.addDataNodeTo(doc, node, "title", bm_folder.getTitle());
		XMLManager.addDataNodeTo(doc, node, "desc", bm_folder.getDescription());
		XMLManager.addDataNodeTo(doc, node, "creationdate", df.format(bm_folder.getCreationDate()));
		XMLManager.addDataNodeTo(doc, node, "modificationdate", df.format(bm_folder.getModificationDate()));

		if( bm_folder.isPersonalFolder() )
			node.appendChild( (Element)doc.createElement("personalfolder") );

		parent_node.appendChild(node);

	Iterator bookmarks = bm_folder.getBookmarks();

		while( bookmarks.hasNext() )
			saveBookmarksImpl( (XAbstractBookmark)bookmarks.next(), doc, node);
	}

// Attributes:
    private final String DTD_SYMBOL = "xbrowser:default:bookmark";
    private final String DTD_URL = XProjectConstants.DTD_DIR+"XBookmark.dtd";
}

⌨️ 快捷键说明

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