hur.cn - 华软网

 热门搜索

如何获取XML的xml:lang值

  作者:未知    来源:网络    更新时间:2011/5/11
XML">
  <?xml version="1.0" encoding="UTF-8"?>
<R xml:lang="zh">
<S>
<I k="transactionId">
<D>111111</D>
</I>
<V k="payerAccountNumber">
<T>付款账号:</T>
<D>1234567890123456</D>
</V>
<V k="amount" c="n">
<T>付款金额:</T>
<D>1,234.23</D>
<T>元</T>
</V>
</S>
</R>

想要获取<R xml:lang="zh">中xml:lang的值“zh”。
尝试如下语句但是取不到
C++">
hr = pxmldoc->get_documentElement(&pDOMElement);
VARIANT vaResult;
VariantInit(&vaResult);
vaResult.vt = VT_BSTR;
pDOMElement->get_nodeValue(&vaResult);

但vaResult的bstrVal总是为空。

跪求正确的方法,谢谢各位大师前辈英雄好汉。
---华软 网友回答---
用selectsinglenode试试
---华软网友回复---
谢谢回复。
找到答案了!
C++">
        IXMLDOMDocumentPtr pxmldoc;
        pxmldoc->loadXML(wszANSI);
IXMLDOMElementPtr   pDOMElement = NULL;
hr = pxmldoc->get_documentElement(&pDOMElement);
IXMLDOMElementPtr pElement;
CString strLabel = "R";
BSTR bsLabel = strLabel.AllocSysString();
pElement = pxmldoc->selectSingleNode(bsLabel);
SysFreeString(bsLabel);

IXMLDOMNamedNodeMapPtr pAttrMap = NULL;
IXMLDOMNodePtr pAttriNode;
pElement->get_attributes(&pAttrMap);
long nCount;
hr = pAttrMap->get_length(&nCount);

if (nCount > 0)
{
BSTR sAttriName;
CString sRealAttriName;

for (int i = 0; i < nCount; i++)
{
// 取得一个属性,并获取属性名
pAttrMap->get_item(i, &pAttriNode);
pAttriNode->get_nodeName(&sAttriName);

// BSTR转为CString
sRealAttriName.Empty();
sRealAttriName = sAttriName;

if (sRealAttriName == "xml:lang")
break;
}

if (i < nCount) //找到对应节点
{
_bstr_t bsValue;
bsValue = (_bstr_t)pAttriNode->nodeValue;
if(strstr(_strlwr(bsValue), "zh"))
{
//切换提示语言为简体中文
*ulLangID = 0x01; //01 中文 02 英文 03 繁体
}
else
{
//切换提示语言为英文
*ulLangID = 0x02;
}
}
else
{
//未找到对应节点
}
}
     
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。