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

📄 abstractxmlwriter.java

📁 联网斗地主 java版本 用jbuilder2005编写
💻 JAVA
字号:
package org.kxml.io;import java.io.*;import java.util.*;import org.kxml.*;/** An abstract XmlWriter including namespace handling. */public abstract class AbstractXmlWriter extends Writer {    protected State current = 	new State (null, 		   PrefixMap.DEFAULT, //null, null, 		   null);                /** writes an attribute. Only allowed immediately after        startTag or attribute.  */        public abstract void attribute (String name, 				    String value) throws IOException;                /** writes an attribute with the given namespace. Only allowed	immediately after startTag or another attribute	call. */    public void attribute (String namespace, 			   String name, 			   String value) throws IOException {		if (namespace == null || "".equals (namespace))	    attribute (name, value);	else {	    String prefix = current.prefixMap.getPrefix (namespace);	    if (prefix == null || prefix.equals ("")) {		int cnt = 0;		do {		    prefix = "p"+(cnt++);		}		while (current.prefixMap.getNamespace (prefix) != null);		current.prefixMap = new PrefixMap 		    (current.prefixMap, prefix, namespace);				attribute ("xmlns:"+prefix, namespace);	    }	    attribute (prefix + ":" + name, value);	}    }        public PrefixMap getPrefixMap () {	return current.prefixMap;    }        /** writes a start tag with the given name, using the given prefix        map.  This method cares about the namespace prefixes and calls        startTag (PrefixMap prefixMap, String tag) for concrete        writing. */        public void startTag (PrefixMap prefixMap,			  String namespace, 			  String name) throws IOException {		// check if namespace is default. 		if (prefixMap == null) prefixMap = current.prefixMap;	if (namespace == null) namespace = "";		String prefix = prefixMap.getPrefix (namespace);		if (prefix == null) { 	    //System.out.println ("namespace "+namespace +" not found in "+prefixMap);	    	    prefixMap = new PrefixMap (prefixMap, "", namespace);	    prefix = "";	}		String tag = prefix.length () == 0 	    ? name	    : prefix + ':' + name;		PrefixMap oldMap = current.prefixMap;		startTag (prefixMap, tag);		// if namespace has changed, write out changes...		if (prefixMap != oldMap) {	    PrefixMap current = prefixMap;	    do {		String p2 = current.getPrefix ();		String ns = current.getNamespace ();		if (prefixMap.getNamespace (p2).equals (ns)		    && !ns.equals (oldMap.getNamespace (p2)))		    attribute (p2.equals ("") ? "xmlns" : ("xmlns:"+p2), ns);		current = current.getPrevious ();	    }	    while (current != null && current != oldMap);	}    }            /** writes a start tag with the given namespace and name */        public void startTag (String namespace, 			  String name) throws IOException {	startTag (null, namespace, name);    }            /** convenience method for startTag (Xml.NO_NAMESPACE, name) */        public void startTag (String name) throws IOException {	startTag (null, Xml.NO_NAMESPACE, name);    }    /** abstract method that must be overwritten by	a method actually writing the resolved start tag 	without namespace checking. This implementation        just puts the state on the stack.<br /><br />                Attention: The actual implementation include the	following line in order to         put the current State on the stack!<br /><br />	current = new State (current, prefixMap, tag);    */    protected abstract void startTag (PrefixMap prefixMap, 				      String tag) throws IOException;       /** Abstract method for writing an end tag.  <b>Attention:</b>	Concrete implementations must pop the previous stack from the	stack:<br /><br />	current = current.prev; */	    public abstract void endTag () throws IOException;    /** writes Xml.DOCTYPE, Xml.PROCESSING_INSTRUCTION or Xml.COMMENT */    public abstract void writeLegacy (int type, 				      String text) throws IOException;}

⌨️ 快捷键说明

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