Browse Source

Merge branch 'release/10.0' of https://code.fineres.com/scm/~hugh.c/base-third into release/10.0

release/10.0
Hugh.C 4 years ago
parent
commit
308b807c79
  1. 9
      fine-itext-old/src/main/java/com/fr/third/com/lowagie/text/html/simpleparser/HTMLWorker.java
  2. 37
      fine-itext-old/src/main/java/com/fr/third/com/lowagie/text/xml/simpleparser/SimpleXMLParser.java

9
fine-itext-old/src/main/java/com/fr/third/com/lowagie/text/html/simpleparser/HTMLWorker.java

@ -775,11 +775,14 @@ public class HTMLWorker implements SimpleXMLDocHandler, DocListener {
+ " h1 h2 h3 h4 h5 h6 img hr";
public static final HashMap tagsSupported = new HashMap();
public static final HashMap tagsPrefixSupported = new HashMap();
static {
StringTokenizer tok = new StringTokenizer(tagsSupportedString);
while (tok.hasMoreTokens())
tagsSupported.put(tok.nextToken(), null);
while (tok.hasMoreTokens()) {
String s = tok.nextToken();
tagsSupported.put(s, null);
tagsPrefixSupported.put(s.charAt(0), null);
}
}
}

37
fine-itext-old/src/main/java/com/fr/third/com/lowagie/text/xml/simpleparser/SimpleXMLParser.java

@ -75,6 +75,7 @@
*/
package com.fr.third.com.lowagie.text.xml.simpleparser;
import com.fr.third.com.lowagie.text.html.simpleparser.HTMLWorker;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@ -117,7 +118,7 @@ public final class SimpleXMLParser {
private final static int ATTRIBUTE_KEY = 12;
private final static int ATTRIBUTE_EQUAL = 13;
private final static int ATTRIBUTE_VALUE = 14;
/** the state stack */
Stack stack;
/** The current character. */
@ -161,7 +162,7 @@ public final class SimpleXMLParser {
String attributekey = null;
/** the attribute value. */
String attributevalue = null;
/**
* Creates a Simple XML parser object.
* Call go(BufferedReader) immediately after creation.
@ -207,7 +208,7 @@ public final class SimpleXMLParser {
}
return;
}
// dealing with \n and \r
if (character == '\n' && eol) {
eol = false;
@ -225,21 +226,18 @@ public final class SimpleXMLParser {
} else {
columns++;
}
switch(state) {
// we are in an unknown state before there's actual content
case UNKNOWN:
if(character == '<') {
saveState(TEXT);
state = TAG_ENCOUNTERED;
beginnOfTag((char) reader.read(), UNKNOWN);
}
break;
// we can encounter any content
case TEXT:
if(character == '<') {
flush();
saveState(state);
state = TAG_ENCOUNTERED;
beginnOfTag((char) reader.read(), TEXT);
} else if(character == '&') {
saveState(state);
entity.setLength(0);
@ -499,6 +497,27 @@ public final class SimpleXMLParser {
private void saveState(int s) {
stack.push(new Integer(s));
}
/**
* 处理标签的开头若不在支持标签范围内<符号作为文本处理<1111 (仿造浏览器的处理方式)
*/
public void beginnOfTag(char c, int type) {
previousCharacter = c;
if (c == -1) {
return;
}
if (c == '/' || HTMLWorker.tagsPrefixSupported.containsKey(c)) {
if (type == TEXT) {
flush();
}
saveState(TEXT);
state = TAG_ENCOUNTERED;
return;
}
text.append((char) character);
nowhite = true;
}
/**
* Flushes the text that is currently in the buffer.
* The text can be ignored, added to the document

Loading…
Cancel
Save