Conversión de un atributo de texto enriquecido en un atributo de texto simple
Utilice las API como getLongDescription, getLongProposedSolution y getLongReason para obtener contenido enriquecido como longDescription, longProposedSolution y longReason, respectivamente, con etiquetas de markup.
Utilice las API como getDescription, getProposedSolutiony getReason para obtener los valores de texto sin formato de una descripción, una solución propuesta y un motivo.
Para convertir contenido enriquecido (con etiquetas de markup) en texto sin formato simple, utilice el siguiente código:
String richText = ChangeOrder2(Instance).getLongDescription()
HTMLText htmlAttr = HTMLText.newHTMLText(richText);
plainText = htmlAttr.getPlainText();
Conversión de un atributo de texto enriquecido en un atributo de texto simple para paquetes de replicación
Al exportar cualquier paquete de objeto de cambio a Windchill, si se excluyen los atributos de texto enriquecido, tales como longDescription, longProposedSolution y longReason, se puede personalizar el sistema de origen para convertir los atributos de texto enriquecido exportados desde el origen en atributos de texto simple. La personalización permite quitar los atributos existentes: description, proposedSolution y reason, y convierte los atributos: longDescription en description, longReason en reason y longProposedSolution en proposedSolution. Como resultado, los valores de texto enriquecido se convierten en valores de texto simple.
Realice los siguientes pasos para la personalización:
1. Según el tipo de objeto de cambio, acceda al fichero respectivo desde esta ruta: WT_HOME\codebase\registry\XSLRepo\11.0.M030.
◦ WTChangeActivity2.xsl
◦ WTChangeIssue.xsl
◦ WTChangeOrder2.xsl
◦ WTChangeRequest2.xsl
◦ WTVariance.xsl
|
En este ejemplo, se utiliza el fichero WTChangeIssue.xsl.
|
2. Añada las siguientes líneas de código en el fichero:
a. Para quitar el atributo description existente:
<xsl:template match="WTChangeIssue/description"></xsl:template>
b. Para reemplazar el atributo longDescription por description:
<xsl:template match="WTChangeIssue/longDescription">
<description>
<xsl:call-template name="plainTextFilter" />
</description>
</xsl:template>
|
El código también llama a una plantilla XSL denominada plainTextFilter, que se definirá posteriormente.
|
c. Para importar la plantilla plainTextFilter:
<xsl:import href="plainTextFilter.xsl" />
3. Cree un fichero denominado plainTextFilter.xsl en la ubicación: <WT_HOME>\codebase\registry\XSLRepo\11.0.M030 y añada las siguientes líneas de código en el fichero.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:filter="java:com.custom.text.conversion.PlainTextConverter" >
<xsl:template name="plainTextFilter">
<xsl:value-of select="filter:convertToPlainText(.)" disable-output-escaping="yes"/>
</xsl:template>
</xsl:stylesheet>
Esto llama al método convertToPlainText de una clase personalizada com.custom.text.conversion.PlainTextConverter. Este método contendrá el valor de la cadena de texto enriquecido como el parámetro de entrada y devolverá el valor de la cadena de texto simple.
4. Cree una clase denominada PlainTextConverter para definir la clase personalizada indicada anteriormente:
package com.custom.text.conversion;
import com.ptc.commons.lang.util.StringEscapeUtils;
import com.ptc.core.richtext.HTMLText;
public class PlainTextConverter {
public static String convertToPlainText(String rawText) {
HTMLText htmlAttr;
String plainText = " ((null))";
try {
if (null != rawText && !rawText.isEmpty()) {
htmlAttr = HTMLText.newHTMLText(rawText);
plainText = htmlAttr.getPlainText();
plainText = StringEscapeUtils.escapeXml(plainText);
}
} catch (Exception exp) {
exp.printStackTrace();
}
return plainText;
}
}
|
La clase debe estar disponible en la classpath de Windchill; por ejemplo, <windchill_home>\codebase\com\custom\text\conversion .
|
Después de completar los pasos anteriores, el paquete creado contendrá los atributos description, proposedSolution y reason con valores de texto simple convertidos a partir de texto enriquecido.
Repita el paso 2 para todos los objetos de cambio y atributos de texto enriquecido que desee convertir.