📄 cmshtmlconverter.java
字号:
if (!m_tools.checkTag(node.getNodeName(),m_configuration.getRemoveBlocks())) {
/* test if tag has to be removed */
if (!m_tools.checkTag(node.getNodeName(),m_configuration.getRemoveTags())) {
/* continue, if block is not replaced */
if (replaceBlock == -1) {
/* replace end tag and discard inline tags */
if (replaceTag != -1) {
m_tagObject = (CmsHtmlConverterObjectReplaceTags)
m_configuration.getReplaceTags().get(replaceTag);
if (!m_tagObject.getInline()) {
String tempReplaceString = m_tagObject.getReplaceEndTag();
/* if parameter is used, get it from node attribute value,
insert it into replaceString */
if (!m_tagObject.getParameter().equals("")) {
String valueParam = m_tools.scanNodeAttrs(node
,m_tagObject.getParameter());
tempReplaceString = m_tools.replaceString(tempReplaceString
,"$parameter$",valueParam);
}
m_tempString.append(tempReplaceString);
}
/* remove temporary object from ArrayList replaceTags */
if (replaceTag > (m_numberReplaceTags - 1)) {
m_configuration.removeObjectReplaceTag(replaceTag);
}
}
else {
/* catch inline tags and discard them */
if (!m_tools.checkTag(node.getNodeName(),m_configuration.getInlineTags())) {
m_tempString.append("</");
m_tempString.append(node.getNodeName());
m_tempString.append(">");
if (m_configuration.getGlobalAddEveryLine()) {
m_tempString.append(m_configuration.getGlobalSuffix()
+ "\n" + m_configuration.getGlobalPrefix());
}
else {
m_tempString.append("\n");
}
}
}
}
} // end of removetag
} // end of removeblock
}
/**
* Private method to transform output at end of document
* @param node actual element node
*/
private void transformEndDocument (Node node) {
m_tempString.append(m_configuration.getGlobalSuffix());
}
/**
* Private method to transform text nodes
* @param node actual text node
*/
private void transformTextNode(Node node) {
String helpString = node.getNodeValue();
/* do not scan text nodes between <script> tags! */
if (!node.getParentNode().getNodeName().equalsIgnoreCase("script")
&& !node.getParentNode().getNodeName().equalsIgnoreCase("style") ){
helpString = m_tools.scanChar(helpString
,m_configuration.getReplaceExtendedChars());
}
/* replace quotationsmarks if configured */
if (m_configuration.getEncodeQuotationmarks()) {
helpString = m_tools.replaceString(helpString,"\"",m_configuration.getQuotationmark());
}
/* test if prefix and suffix have to be added every new line */
if (m_configuration.getGlobalAddEveryLine()) {
helpString = m_tools.replaceString(helpString,"\n"
,(m_configuration.getGlobalSuffix() + "\n" + m_configuration.getGlobalPrefix()));
}
m_tempString.append(helpString);
}
/**
* Private method to delete empty "prefix+suffix" lines in output String
*/
private String cleanOutput (String cleanString) {
if (m_configuration.getGlobalAddEveryLine()) {
cleanString += "\n";
String cutString = m_configuration.getGlobalPrefix()
+ m_configuration.getGlobalSuffix() + "\n";
/* delete empty "prefix-suffix" lines if suffix and prefix are not empty */
if (!m_configuration.getGlobalPrefix().equals("")
&& !m_configuration.getGlobalSuffix().equals("")) {
cleanString = m_tools.replaceString(cleanString,cutString,"");
}
}
return cleanString;
}
/**
* Tests if specified tag has to be replaced and, if it is found,
* delivers index of hit in ArrayList.
* @param node DOM Node which might be replaced
* @return "-1" if tag is not found, otherwise index of list with hit
*/
private int indexReplaceTag(Node node) {
ArrayList replaceTags = m_configuration.getReplaceTags();
NamedNodeMap attrs = node.getAttributes();
CmsHtmlConverterObjectReplaceTags testObject = new CmsHtmlConverterObjectReplaceTags();
for (int index = 0; index < replaceTags.size(); index++) {
testObject = (CmsHtmlConverterObjectReplaceTags)(replaceTags.get(index));
if (node.getNodeName().equals(testObject.getTagName())) {
/* if no identifier attribute is defined, replace all nodes */
if (testObject.getTagAttrib().equals("")) {
/* test if replaceStrings have to be retrieved from attributes */
if (testObject.getReplaceFromAttrs()) {
return scanTagElementAttrs(node,testObject);
}
return index;
}
for ( int i = (attrs.getLength() - 1); i >= 0 ; i-- ) {
if ( attrs.item(i).getNodeName().equals(testObject.getTagAttrib())
&& (attrs.item(i).getNodeValue().equals(testObject.getTagAttribValue())
|| testObject.getTagAttribValue().equals("")) ) {
/* test if replaceStrings have to be retrieved from attributes */
if (testObject.getReplaceFromAttrs()) {
return scanTagElementAttrs(node,testObject);
}
return index;
}
}
}
}
return -1;
}
/**
* scans node attributes and creates new CmsHtmlConverterObjectReplaceTags
* @param node DOM node which is scanned
* @param testObject parent replaceTag object
* @return index of new object in ArrayList replaceTags
*/
private int scanTagElementAttrs(Node node, CmsHtmlConverterObjectReplaceTags testObject) {
boolean added = false;
ArrayList replaceTags = m_configuration.getReplaceTags();
NamedNodeMap attrs = node.getAttributes();
String prefix = testObject.getPrefix();
String suffix = testObject.getSuffix();
String name = testObject.getTagName();
String attrib = testObject.getTagAttrib();
String attrValue = testObject.getTagAttribValue();
String startAttribute = testObject.getStartAttribute();
String endAttribute = testObject.getEndAttribute();
String replaceStartTag = "";
String replaceEndTag = "";
String parameter = testObject.getParameter();
String attrName = "";
boolean replaceParamAttr = testObject.getReplaceParamAttr();
/* scan attributes for replaceStrings */
for (int i = 0;i < attrs.getLength();i++) {
attrName = attrs.item(i).getNodeName();
if (attrName.equalsIgnoreCase(startAttribute)) {
replaceStartTag = attrs.item(i).getNodeValue();
}
if (attrName.equalsIgnoreCase(endAttribute)) {
replaceEndTag = attrs.item(i).getNodeValue();
}
}
/* replace encoded brackets if defined */
if (m_configuration.getUseBrackets()) {
replaceStartTag = m_configuration.scanBrackets(replaceStartTag);
replaceEndTag = m_configuration.scanBrackets(replaceEndTag);
}
/* add temporary object to ArrayList replaceTags */
added = m_configuration.addObjectReplaceTag(prefix,name,attrib,attrValue
,replaceStartTag,replaceEndTag,suffix,false,"","",parameter,replaceParamAttr);
return m_configuration.getReplaceTags().size()-1;
}
/**
* Tests if specified block has to be replaced and, if it is found,
* delivers index of hit in ArrayList.
* @param node DOM Node which might be replaced
* @return "-1" if tag is not found, otherwise index of list with hit
*/
private int indexReplaceBlock(Node node) {
ArrayList replaceBlocks = m_configuration.getReplaceBlocks();
NamedNodeMap attrs = node.getAttributes();
CmsHtmlConverterObjectReplaceBlocks testObject = new CmsHtmlConverterObjectReplaceBlocks();
for (int index = 0; index < replaceBlocks.size(); index++) {
testObject=(CmsHtmlConverterObjectReplaceBlocks)(replaceBlocks.get(index));
if (node.getNodeName().equals(testObject.getTagName())) {
if (testObject.getTagAttrib().equals("")) {
/* test if replaceStrings has to be retrieved from attributes */
if (testObject.getReplaceFromAttrs()) {
return scanBlockElementAttrs(node,testObject);
}
return index;
}
for ( int i = (attrs.getLength() - 1); i >= 0 ; i-- ) {
if ( attrs.item(i).getNodeName().equals(testObject.getTagAttrib())
&& (attrs.item(i).getNodeValue().equals(testObject.getTagAttribValue())
|| testObject.getTagAttribValue().equals("")) ) {
/* test if replaceString has to be retrieved from attributes */
if (testObject.getReplaceFromAttrs()) {
return scanBlockElementAttrs(node,testObject);
}
return index;
}
}
}
}
return -1;
}
/**
* scans node attributes and creates new CmsHtmlConverterObjectReplaceBlocks
* @param node DOM node which is scanned
* @param testObject parent replaceBlock object
* @return index of new object in ArrayList replaceBlocks
*/
private int scanBlockElementAttrs(Node node, CmsHtmlConverterObjectReplaceBlocks testObject) {
boolean added = false;
ArrayList replaceBlocks = m_configuration.getReplaceBlocks();
NamedNodeMap attrs = node.getAttributes();
String prefix = testObject.getPrefix();
String suffix = testObject.getSuffix();
String name = testObject.getTagName();
String attrib = testObject.getTagAttrib();
String attrValue = testObject.getTagAttribValue();
String replaceString = "";
String replaceAttribute = testObject.getReplaceAttribute();
String attrName = "";
String parameter = testObject.getParameter();
/* scan attributes for replaceString */
for (int i=0;i<attrs.getLength();i++) {
attrName = attrs.item(i).getNodeName();
if (attrName.equalsIgnoreCase(replaceAttribute)) {
replaceString = attrs.item(i).getNodeValue();
}
}
/* replace encoded brackets if defined */
if (m_configuration.getUseBrackets()) {
replaceString = m_configuration.scanBrackets(replaceString);
}
/* add temporary object to ArrayList replaceBlocks */
added = m_configuration.addObjectReplaceBlock(prefix,name,attrib
,attrValue,replaceString,suffix,false,"",parameter);
return m_configuration.getReplaceBlocks().size()-1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -