将增强型文本属性转换为简单文本属性
使用 getLongDescription、getLongProposedSolution 和 getLongReason 等 API 可分别提取 longDescription、longProposedSolution 和 longReason 等带标注标记的丰富内容。
使用 getDescription、getProposedSolution 和 getReason 等 API 可提取说明、提议的解决方案和原因的纯文本值。
要将丰富内容 (带标注标记) 转换为简单的纯文本,请使用以下代码:
String richText = ChangeOrder2(Instance).getLongDescription()
HTMLText htmlAttr = HTMLText.newHTMLText(richText);
plainText = htmlAttr.getPlainText();
将增强型文本属性转换为复制包的简单文本属性
将任何变更对象包导出到 Windchill 时,如果已排除 longDescription、longProposedSolution 和 longReason 等增强型文本属性,则可以自定义源系统以将从源系统导出的增强型文本属性转换为简单文本属性。自定义会移除现有属性:description、proposedSolution 和 reason,并将属性 longDescription 转换为 description,longReason 转换为 reason,longProposedSolution 转换为 proposedSolution。因此,增强型文本值被转换为简单文本值。
执行以下步骤进行自定义:
1. 根据变更对象的类型,从以下路径访问相应的文件:<WT_HOME>\codebase\registry\XSLRepo\11.0.M030:
◦ WTChangeActivity2.xsl
◦ WTChangeIssue.xsl
◦ WTChangeOrder2.xsl
◦ WTChangeRequest2.xsl
◦ WTVariance.xsl
|
在本示例中,我们将使用 WTChangeIssue.xsl 文件。
|
2. 在文件中添加以下代码行:
a. 要移除现有 description 属性:
<xsl:template match="WTChangeIssue/description"></xsl:template>
b. 要将 longDescription 属性替换为 description:
<xsl:template match="WTChangeIssue/longDescription">
<description>
<xsl:call-template name="plainTextFilter" />
</description>
</xsl:template>
|
此代码还调用了名为 plainTextFilter 的 XSL 模板,该模板将在随后定义。
|
c. 要导入 plainTextFilter 模板:
<xsl:import href="plainTextFilter.xsl" />
3. 在 <WT_HOME>\codebase\registry\XSLRepo\11.0.M030 位置创建名为 plainTextFilter.xsl 的文件,并在该文件中添加以下代码行:
<?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>
其中调用了自定义类 com.custom.text.conversion.PlainTextConverter 的 convertToPlainText 方法。此方法将包含增强型文本字符串值作为输入参数,并返回简单文本字符串值。
4. 创建一个名为 PlainTextConverter 的类来定义上述自定义类:
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;
}
}
|
类应位于 Windchill 类路径,例如,<windchill 主页>\codebase\com\custom\text\conversion。
|
完成上述步骤后,创建的包将包含 description、proposedSolution 和 reason 属性,其中包含从增强型文本转换而来的简单文本值。
针对所有要转换的变更对象和增强型文本属性重复步骤 2。