Сапи, как получить элементы внутри элементов тега

У меня есть такая грамматика

 <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, один и первый.

В настоящее время использую

ISpRecoResult* pResult = spevent.RecoResult();

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

pszCoMemResultText дает мне «1» или «2» на основе распознавания

Спасибо

2

Решение

Вы используете грамматику W3C, а не грамматику SAPI. Дурак я.

Эти данные хранятся в SPPHRASE структура, а не текст, поэтому вы должны получить это так:

ISpRecoResult* pResult = spevent.RecoResult();

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

Теперь я не использовал грамматики W3C с C ++, поэтому я не полностью конечно, если он работает так же, как и с грамматикой SAPI, но при условии, это делает, данные тега хранятся в виде дерева в pphrase->pProperties,

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]