如何在 DOORS 中使用 DXL 获取条带 RTF 格式并获取实际字符串值?

How do you get strip RTF formatting and get actual string value using DXL in DOORS?

我正在尝试获取 DOORS 的 "ID" 列中的值,我目前正在这样做
字符串 ostr=richtext_identifier(o)

当我尝试打印 ostr 时,在某些模块中我只得到 ID(这正是我想要的)。但在其他模块中,我会得到类似 "{\rtf1\ansi\ansicpg1256\deff0\nouicompat{\fonttbl{\f0\fnil\fcharset0 Times New Roman;}{\f1\froman\fcharset0 Times New Roman;}} {*\generator Riched20 10.0.17134 }\viewkind4\uc1 \pard\f0\fs20\lang1033 SS_\f1\fs24 100\par } " 这是 RTF 值,我想知道最好的方法是去除这种格式并只获取值。

也许还有另一种方法可以解决这个问题,我也没有想到。任何帮助将不胜感激。

所以 DOORS 的 ID 列实际上是一个组合 - DOORS 将其构建在模块级属性 'Prefix' 和对象级属性 'Absolute Number'.

之外

如果你以后想获取这个值,我会执行以下操作(使用你的变量)

string ostr = ( module ( o ) )."Prefix" o."Absolute Number" ""

这与以下相反,后者(尽管在插入列对话框中似乎是一个有效属性)将不起作用

string ostr = o."Object Identifier" ""

希望对您有所帮助!

评论回复:代码工作不需要模块名称。我在 DOORS 9.6.1.10 上成功测试了以下内容:

Object o = current

string ostr = ( module ( o ) )."Prefix" o."Absolute Number" ""

print ostr

另一种解决方案是使用 identifier 函数,它将一个对象作为输入参数,returns 标识符作为普通(非 RTF)字符串:

声明 字符串标识符(对象 o) 操作 Returns对象o的标识符,是绝对数字和模块前缀的组合,字符串。

最佳解决方案在某种程度上取决于您检索对象 ID 的基本要求。