Sapi如何在标签元素中获取元素

时间:2013-08-09 06:07:25

标签: c++ sapi

我有这样的语法

 <grammar xml:lang="en-US" version="1.0" xmlns="http://www.w3.org/2001/06/grammar" tag   format="semantics/1.0" root="number" mode="voice">
 <rule id="number" scope="public">
  <one-of>
        <item>1<tag>out.string="one"</tag><tag>out.Name="first"</tag></item>
        <item>2<tag>out.string="two"</tag><tag>out.Name="second"</tag></item>
  </one-of>
 </rule>
</grammar>

任何人都可以帮助我如何访问标签元素中的元素。 例如。如果识别器识别1 那么它应该给出1,1和1。

目前正在使用

ISpRecoResult* pResult = spevent.RecoResult();

LPWSTR pszCoMemResultText = NULL;
_hr = pResult->GetText(SP_GETWHOLEPHRASE, SP_GETWHOLEPHRASE, TRUE,&pszCoMemResultText,NULL);

pszCoMemResultText基于识别给我“1”或“2”

由于

1 个答案:

答案 0 :(得分:0)

您使用的是W3C语法,而不是SAPI语法。傻我。

该数据存储在SPPHRASE结构中,而不是文本中,因此您可以像这样检索它:

ISpRecoResult* pResult = spevent.RecoResult();

SPPHRASE* pphrase;
hr = pResult->GetPhrase(&pphrase);
// your code here
CoTaskMemFree(pphrase);

现在,我还没有将W3C语法与C ++一起使用,所以我不能完全确定它是否与SAPI语法的工作方式相同,但假设它是,标签数据将存储为pphrase->pProperties中的树。