本文整理汇总了C++中msxml::IXMLDOMElementPtr类的典型用法代码示例。如果您正苦于以下问题:C++ IXMLDOMElementPtr类的具体用法?C++ IXMLDOMElementPtr怎么用?C++ IXMLDOMElementPtr使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了IXMLDOMElementPtr类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ChangeItem
bool CHelpDB::ChangeItem(CTSTRING& sAlias, CTSTRING& sText)
{
MSXML::IXMLDOMElementPtr El;
HRESULT hr = 0;
bool r = false;
if(m_doc == 0) return false;
if(GetItemElement(sAlias, El, false))
{
if(SUCCEEDED(hr = El->setAttribute(TAG_TEXT, sText.c_str())))
{
g_pLog->msg(_T("Item changed: %s = %s"), sAlias.c_str(), sText.c_str());
r = true;
}
else
{
g_pLog->msg(_T("SetAttribute(%s=%s) failed, hr=0x%08x"), TAG_TEXT, sText.c_str(), hr);
}
}
else
{
sprintf(m_err, _T("%s was not found in the database."), sAlias.c_str());
g_pLog->msg(_T("CHelpDB::ChangeItem(%s) - Item wasn't found."), sAlias.c_str());
}
return r;
}
示例2: OnShowWindow
void NewVersionDlg::OnShowWindow(BOOL bShow, UINT nStatus)
{
CDialog::OnShowWindow(bShow, nStatus);
int iTotalTextLength = ctlDetails.GetWindowTextLength();
ctlDetails.SetSel(iTotalTextLength, iTotalTextLength);
BeginWaitCursor();
CString sResult;
CWebAccess webAccess;
webAccess.Get("www.milow.net/site/projects/parnrar/pnrVersions.xml", sResult);
if (sResult != "")
{
MSXML::IXMLDOMDocumentPtr domVersions;
if (CoCreateInstance( MSXML::CLSID_DOMDocument, 0, CLSCTX_INPROC_SERVER, MSXML::IID_IXMLDOMDocument, (void**)&domVersions ) != S_OK)
{
ctlDetails.ReplaceSel("Error: Failed to create DOMDocument object");
goto CLEANUP;
}
domVersions->loadXML(sResult.GetBuffer(0));
CString sXml = static_cast<char *>(domVersions->xml);
if (sXml == "")
{
ctlDetails.ReplaceSel("Error: Failed to download version information");
goto CLEANUP;
}
MSXML::IXMLDOMElementPtr eVer = domVersions->selectSingleNode("/Versions/Version");
CString sVer = static_cast<char *>(_bstr_t(eVer->getAttribute("number")));
if (sVer == theApp.GetMyVersion())
{
ctlDetails.ReplaceSel("You are currently running the latest version of Par-N-Rar");
goto CLEANUP;
}
//Get all info about later versions
CString sText = "You are currently running v" + theApp.GetMyVersion();
sText += "\n";
sText += "The latest version is v" + sVer;
sText += "\n\n";
MSXML::IXMLDOMNodeListPtr nlVersions = domVersions->selectNodes( "/Versions/Version");
for (long l=0; l<nlVersions->length; l++)
{
eVer = nlVersions->Getitem(l);
sVer = static_cast<char *>(_bstr_t(eVer->getAttribute("number")));
if (sVer == theApp.GetMyVersion())
break;
sText += "****************************************************\nVersion " + sVer;
sText += ": \n";
sText += static_cast<char *>(eVer->text);
sText += "\n\n";
}
ctlDetails.ReplaceSel(sText);
}
CLEANUP:
Resize();
EndWaitCursor();
}
示例3: AddElement
bool CVideoExchange::AddElement(LPCTSTR strName, LPCTSTR strValue)
{
MSXML::IXMLDOMElementPtr pRoot;
MSXML::IXMLDOMElementPtr pElem;
pRoot = m_pDocument->getElementsByTagName(L"CARDVIDEO")->item[0];
pElem = m_pDocument->createElement(_bstr_t(strName));
pElem->text = (LPCTSTR)strValue;
pRoot->appendChild(pElem);
pElem.Release();
return true;
}
示例4: GetFirstElementByTagName
Result GetFirstElementByTagName(MSXML::IXMLDOMElementPtr& parent, const string& tagName, MSXML::IXMLDOMElementPtr& pEl)
{
Result r;
try
{
pEl = 0;
MSXML::IXMLDOMNodeListPtr pList = parent->getElementsByTagName(tagName.c_str());
if(pList == NULL)
{
r.Fail(Format("No '%' nodes found (pList = 0)").s(tagName).Str());
}
else
{
if(!pList->length)
{
r.Fail(Format("No '%' nodes found (length = 0)").s(tagName).Str());
}
else
{
pEl = pList->nextNode();
r.Succeed();
}
}
}
catch(_com_error& e)
{
r.Fail(Format("Com error: % %").s(e.ErrorMessage()).s(e.Description()).Str());
}
return r;
}
示例5: Build
////////////////////////////////////////////////////////////////////////////
// Function: Create an XML DOM Document from Scratch in memory
////////////////////////////////////////////////////////////////////////////
HRESULT CXMLDocument::Build()
{
// Create a root node
MSXML::IXMLDOMNodePtr pRoot;
m_pDoc->createNode(CComVariant(MSXML::NODE_ELEMENT), CComBSTR("Root"), NULL, &pRoot);
// add child nodes
HRESULT hr = S_OK;
for (int i = 0; i < 10; i++)
{
MSXML::IXMLDOMNodePtr pNode;
m_pDoc->createNode(CComVariant(MSXML::NODE_ELEMENT), CComBSTR("Order"), NULL, &pNode);
MSXML::IXMLDOMElementPtr pElement = pNode;
if (pElement != NULL)
pElement->setAttribute(CComBSTR("id"), CComVariant(i));
MSXML::IXMLDOMNodePtr p0 = NULL;
CComVariant after;
hr = pRoot->insertBefore(pNode, after, &p0);
hr = CheckHR(hr, "inserting node");
// The XML Document should now own the node.
for (int j = 0; j < 10; j++)
{
MSXML::IXMLDOMNodePtr pNode2;
m_pDoc->createNode(CComVariant(MSXML::NODE_ELEMENT), CComBSTR("Item"), NULL, &pNode2);
MSXML::IXMLDOMElementPtr pElement2 = pNode2;
if (pElement2 != NULL)
pElement2->setAttribute(CComBSTR("id"), CComVariant((i*10) + j));
MSXML::IXMLDOMNodePtr p1 = NULL;
CComVariant after;
hr = p0->insertBefore(pNode2, after, &p1);
hr = CheckHR(hr, "inserting node");
// The XML Document should now own the node.
}
}
// Now attach this new subtree to the document.
m_pDoc->appendChild(pRoot, NULL);
return hr;
}
示例6: GetItemElement
bool CHelpDB::GetItemElement(CTSTRING& _sAlias, MSXML::IXMLDOMElementPtr& Out, bool bCreate)
{
bool r = false;
TSTRING sXPath;
MSXML::IXMLDOMNodePtr Node;
TSTRING sAlias;
{
TCHAR* tsz = _tcsdup(_sAlias.c_str());
_tcsupr(tsz);
sAlias = tsz;
SAFE_FREE(tsz);
}
// this will look something like MSG[@ALIAS="hithere"]
sprintf(sXPath, TAG_MSG _T("[@") TAG_ALIAS _T("=\"%s\"]"), sAlias.c_str());
try
{
Node = m_root->selectSingleNode(_bstr_t(sXPath.c_str()));
if((Node == NULL) && (bCreate == true))
{
MSXML::IXMLDOMElementPtr NewEl;
MSXML::IXMLDOMNodePtr NewNode;
NewEl = m_doc->createElement("MSG");
NewEl.QueryInterface(__uuidof(MSXML::IXMLDOMNode), &NewNode);
Node = m_root->appendChild(NewNode);
}
if(Node != NULL)
{
Node.QueryInterface(__uuidof(MSXML::IXMLDOMElement), &Out);
r = true;
}
}
catch(_com_error& e)
{
sprintf(m_err, _T("COM Error: %08x"), e.Error());
g_pLog->msg(_T("CHelpDB::GetItemElement(%s)"), _sAlias.c_str());
}
return r;
}
示例7: DeleteItem
bool CHelpDB::DeleteItem(CTSTRING& sAlias)
{
MSXML::IXMLDOMElementPtr El;
MSXML::IXMLDOMNodePtr Node;
MSXML::IXMLDOMNodePtr Parent;
bool r = false;
if(m_doc == 0) return false;
if(GetItemElement(sAlias, El, false))
{
El.QueryInterface(__uuidof(MSXML::IXMLDOMNode), &Node);
Parent = Node->GetparentNode();
Parent->removeChild(Node);
r = true;
}
return r;
}
示例8: XMLSetAttribute
Result XMLSetAttribute(const _variant_t& val, MSXML::IXMLDOMElementPtr pEl, const string& sAttribute)
{
Result r;
try
{
pEl->setAttribute(sAttribute.c_str(), val);
r.Succeed();
}
catch(_com_error& e)
{
r.Fail(Format("Com error: % %").s(e.ErrorMessage()).s(e.Description()).Str());
}
return r;
}
示例9: NewItem
bool CHelpDB::NewItem(CTSTRING& _sAlias, CTSTRING& sText, CTSTRING& sCreator)
{
MSXML::IXMLDOMElementPtr El;
bool r = false;
if(m_doc == 0) return false;
TSTRING sAlias;
{
TCHAR* tsz = _tcsdup(_sAlias.c_str());
_tcsupr(tsz);
sAlias = tsz;
SAFE_FREE(tsz);
}
// Just determine if it exists.
if(GetItemElement(sAlias, El, false))
{
// it already exists; fail.
sprintf(m_err, _T("%s already exists. If you want to change the existing entry, use !msgchange."), sAlias.c_str());
g_pLog->msg(_T("%s"), m_err.c_str());
}
else
{
// doesn't already exist... we're golden like the shower. This time
// just call GetItemElement() with bCreate set to true.
if(!GetItemElement(sAlias, El, true))
{
sprintf(m_err, _T("%s could not be added."), sAlias.c_str());
g_pLog->msg(_T("%s"), m_err.c_str());
}
else
{
El->setAttribute(TAG_ALIAS, sAlias.c_str());
El->setAttribute(TAG_CREATOR, sCreator.c_str());
El->setAttribute(TAG_TEXT, sText.c_str());
El->setAttribute(TAG_USAGE, _T("0"));
SYSTEMTIME st;
TSTRING sTime;
GetLocalTime(&st);
Bin2Str(sTime, (BYTE*)&st, sizeof(st));
El->setAttribute(TAG_TIME, sTime.c_str());
g_pLog->msg(_T("New db item: %s = %s"), _sAlias.c_str(), sText.c_str());
r = true;
}
}
return r;
}
示例10: XMLGetAttribute
Result XMLGetAttribute(_variant_t& out, MSXML::IXMLDOMElementPtr pEl, const string& sAttribute)
{
Result r;
try
{
out = pEl->getAttribute(sAttribute.c_str());
if(out.vt == VT_NULL)
{
r.Fail(Format("Attribute '%' not found, or VT_NULL").s(sAttribute).Str());
}
else
{
r.Succeed();
}
}
catch(_com_error& e)
{
r.Fail(Format("Error reading the %s attribute from xml. % %").s(sAttribute).s(e.ErrorMessage()).s(e.Description()).Str());
}
return r;
}
示例11: ElementToStruct
bool CHelpDB::ElementToStruct(CHelpMessage& info, MSXML::IXMLDOMElementPtr& El, bool bIncUsage)
{
bool r = false;
try
{
_variant_t vAlias = El->getAttribute(TAG_ALIAS);
_variant_t vCreator = El->getAttribute(TAG_CREATOR);
_variant_t vText = El->getAttribute(TAG_TEXT);
_variant_t vCreated = El->getAttribute(TAG_TIME);
_variant_t vUsage = El->getAttribute(TAG_USAGE);
HW2T(info.Alias, vAlias.bstrVal);
HW2T(info.Creator, vCreator.bstrVal);
HW2T(info.Text, vText.bstrVal);
TSTRING sTemp;
HW2T(sTemp, vCreated.bstrVal);
Str2Bin(sTemp, (PBYTE)&info.Created, sizeof(info.Created));
HW2T(sTemp, vUsage.bstrVal);
info.nUsage = _tcstoul(sTemp.c_str(), 0, 10);
if(bIncUsage)
{
TCHAR tsz[500];
info.nUsage++;
_ultot(info.nUsage, tsz, 10);
El->setAttribute(_bstr_t(TAG_USAGE), _variant_t(tsz));
}
r = true;
}
catch(_com_error& e)
{
sprintf(m_err, _T("COM Error: %08x"), e.Error(), (TCHAR*)e.Description());
g_pLog->msg(_T("CHelpDB::ElementToStruct ERROR"));
}
return r;
}
示例12: Dehydrate
bool CVideoExchange::Dehydrate(void)
{
if (m_pDocument)
m_pDocument.Release();
MSXML::IXMLDOMElementPtr pRoot;
MSXML::IXMLDOMElementPtr pElem;
TCHAR chBuffer[255];
HRESULT hr = m_pDocument.CreateInstance(L"MSXML.FreeThreadedDOMDocument");
ASSERT(ERROR_SUCCESS == hr);
pElem = m_pDocument->createElement(L"CARDVIDEO");
pRoot = m_pDocument->appendChild(pElem);
pElem.Release();
pElem = m_pDocument->createElement(L"BITRATE");
pElem->text = (LPCTSTR)m_sBitRate;
pRoot->appendChild(pElem);
pElem.Release();
pElem = m_pDocument->createElement(L"FILENAME");
pElem->text = (LPCTSTR)m_sFileName;
pRoot->appendChild(pElem);
pElem.Release();
pElem = m_pDocument->createElement(L"MPEGFORMAT");
pElem->text = (LPCTSTR)m_sMPEGFormat;
pRoot->appendChild(pElem);
pElem.Release();
pElem = m_pDocument->createElement(L"CARDID");
pElem->text = (LPCTSTR)m_sCardId;
pRoot->appendChild(pElem);
pElem.Release();
pElem = m_pDocument->createElement(L"ROOMID");
pElem->text = _ltot(m_nRoomId,chBuffer,10);
pRoot->appendChild(pElem);
pElem.Release();
pElem = m_pDocument->createElement(L"TIMESTART");
pElem->text = (LPCTSTR)m_odtStart.Format(_T("%m-%d-%Y %H:%M:%S"));
pRoot->appendChild(pElem);
pElem.Release();
pElem = m_pDocument->createElement(L"TIMESTOP");
pElem->text = (LPCTSTR)m_odtStop.Format(_T("%m-%d-%Y %H:%M:%S"));
pRoot->appendChild(pElem);
pElem.Release();
pElem = m_pDocument->createElement(L"DURATION");
pElem->text = _ltot(m_nDuration,chBuffer,10);
pRoot->appendChild(pElem);
pElem.Release();
pElem = m_pDocument->createElement(L"VIDEOSTORAGESERVERID");
pElem->text = _ltot(m_nVideoStorageServerId,chBuffer,10);
pRoot->appendChild(pElem);
pElem.Release();
pElem = m_pDocument->createElement(L"STREAMINGENCODERID");
pElem->text = _ltot(m_nStreamingEncoderId,chBuffer,10);
pRoot->appendChild(pElem);
pElem.Release();
pElem = m_pDocument->createElement(L"SESSIONID");
pElem->text = (LPCTSTR)m_sSessionId;
pRoot->appendChild(pElem);
pElem.Release();
pElem = m_pDocument->createElement(L"SESSIONNAME");
pElem->text = (LPCTSTR)m_sSessionName;
pRoot->appendChild(pElem);
pElem.Release();
pElem = m_pDocument->createElement(L"DISPLAYNAME");
pElem->text = (LPCTSTR)m_sDisplayName;
pRoot->appendChild(pElem);
pElem.Release();
pElem = m_pDocument->createElement(L"FILETITLE");
pElem->text = (LPCTSTR)m_sFileTitle;
pRoot->appendChild(pElem);
pElem.Release();
return false;
}
示例13: Load
void CArc::Load(MSXML::IXMLDOMElementPtr pGO)
{
MSXML::IXMLDOMElementPtr pStatic;
MSXML::IXMLDOMElementPtr pDynamic;
MSXML::IXMLDOMElementPtr pAttr;
_variant_t val;
pStatic=pGO->selectSingleNode(L"./static");
//position
pAttr=pStatic->selectSingleNode(L"./position");
//x1
val=pAttr->getAttribute(L"x1");
val.ChangeType(VT_I4);
m_lx1=val.lVal;
//y1
val=pAttr->getAttribute(L"y1");
val.ChangeType(VT_I4);
m_ly1=val.lVal;
//x2
val=pAttr->getAttribute(L"x2");
val.ChangeType(VT_I4);
m_lx2=val.lVal;
//y2
val=pAttr->getAttribute(L"y2");
val.ChangeType(VT_I4);
m_ly2=val.lVal;
//x3
val=pAttr->getAttribute(L"x3");
val.ChangeType(VT_I4);
m_lx3=val.lVal;
//y3
val=pAttr->getAttribute(L"y3");
val.ChangeType(VT_I4);
m_ly3=val.lVal;
//x4
val=pAttr->getAttribute(L"x4");
val.ChangeType(VT_I4);
m_lx4=val.lVal;
//y4
val=pAttr->getAttribute(L"y4");
val.ChangeType(VT_I4);
m_ly4=val.lVal;
//pen
pAttr=pStatic->selectSingleNode(L"./pen");
//style
val=pAttr->getAttribute(L"s");
val.ChangeType(VT_UI4);
m_pen.lopnStyle=val.ulVal;
//width
val=pAttr->getAttribute(L"w");
val.ChangeType(VT_I4);
m_pen.lopnWidth.x=val.lVal;
//color
val=pAttr->getAttribute(L"c");
val.ChangeType(VT_UI4);
m_pen.lopnColor=val.ulVal;
//load dynamic attribution if have
pDynamic=pGO->selectSingleNode(L"./dynamic");
val=pDynamic->getAttribute(L"linked");
val.ChangeType(VT_BOOL);
if(val.boolVal){
m_DnyAttr.Load(pDynamic);
m_DnyAttr.m_Linked=true;
}else{
m_DnyAttr.m_Linked=false;
}
}
示例14: Save
void CArc::Save(MSXML::IXMLDOMElementPtr pRoot)
{
MSXML::IXMLDOMElementPtr pGO;
MSXML::IXMLDOMElementPtr pStatic;
MSXML::IXMLDOMElementPtr pDynamic;
MSXML::IXMLDOMElementPtr pAttr;
_variant_t val;
MSXML::IXMLDOMDocumentPtr pDoc=pRoot->ownerDocument;
//add a graphy object
pGO=pDoc->createElement(L"go");
val.vt=VT_BSTR;
val.bstrVal=::SysAllocString(L"arc");
pGO->setAttribute(L"type",val);
pRoot->appendChild(pGO);
//add a group static attribution
pStatic=pDoc->createElement(L"static");
pGO->appendChild(pStatic);
//position
pAttr=pDoc->createElement(L"position");
pStatic->appendChild(pAttr);
//x1
val.vt=VT_I4;
val.lVal=m_lx1;
pAttr->setAttribute(L"x1",val);
//y1
val.vt=VT_I4;
val.lVal=m_ly1;
pAttr->setAttribute(L"y1",val);
//x2
val.vt=VT_I4;
val.lVal=m_lx2;
pAttr->setAttribute(L"x2",val);
//y2
val.vt=VT_I4;
val.lVal=m_ly2;
pAttr->setAttribute(L"y2",val);
//x3
val.vt=VT_I4;
val.lVal=m_lx3;
pAttr->setAttribute(L"x3",val);
//y3
val.vt=VT_I4;
val.lVal=m_ly1;
pAttr->setAttribute(L"y3",val);
//x4
val.vt=VT_I4;
val.lVal=m_lx4;
pAttr->setAttribute(L"x4",val);
//y4
val.vt=VT_I4;
val.lVal=m_ly4;
pAttr->setAttribute(L"y4",val);
//pen
pAttr=pDoc->createElement("pen");
pStatic->appendChild(pAttr);
//style
val.vt=VT_UI4;
val.ulVal=m_pen.lopnStyle;
pAttr->setAttribute(L"s",val);
//width
val.vt=VT_I4;
val.lVal=m_pen.lopnWidth.x;
pAttr->setAttribute(L"w",val);
//color
val.vt=VT_UI4;
val.ulVal=m_pen.lopnColor;
pAttr->setAttribute(L"c",val);
//if linked then save dynamic attribution
pDynamic=pDoc->createElement("dynamic");
pGO->appendChild(pDynamic);
if(m_DnyAttr.m_Linked){
//linked
val.vt=VT_BOOL;
val.boolVal=-1;
pDynamic->setAttribute(L"linked",val);
//save dynamic attribution
m_DnyAttr.Save(pDoc,pDynamic);
}else{
//unlinked
val.vt=VT_BOOL;
val.boolVal=FALSE;
pDynamic->setAttribute(L"linked",val);
}
}
示例15: main
/*
* ----- main -----
*/
int main(int argc, char* argv[]) {
if ( argc != 2 ) {
cerr << "fsm <URL for FSM>" << endl;
return 1;
}
if ( FAILED(CoInitialize(0)) ) {
cerr << "Can't initialize COM" << endl;
return 1;
}
try {
/*
* XML Parser の生成と初期化
*/
MSXML::IXMLDOMDocumentPtr document("MSXML.DOMDocument");
document->validateOnParse = VARIANT_TRUE; // 検証を行う
document->async = VARIANT_FALSE; // Parse完了までloadメソッドをブロック
/*
* 引数に与えられたURLで示されたXMLをロードする
*/
document->load(argv[1]);
/*
* Parseエラーがあれば出力
*/
MSXML::IXMLDOMParseErrorPtr error = document->parseError;
if ( error->errorCode != 0 ) {
if ( error->line ) {
cerr << "line : " << error->line << endl;
cerr << "position : " << error->linepos << endl;
cerr << "source : " << (const char*)error->srcText << endl;
}
cerr << "URL : " << (const char*)error->url << endl;
cerr << "code : " << error->errorCode << endl;
cerr << "reason : " << (const char*)error->reason << endl;
return 1;
}
/*
* ルートエレメントを取得する
*/
MSXML::IXMLDOMElementPtr root = document->documentElement;
/*
* 全イベントを取り出す
*/
set<string> event_set;
MSXML::IXMLDOMNodeListPtr events = root->getElementsByTagName("Event");
for ( int i = 0; i < events->length; ++i ) {
MSXML::IXMLDOMElementPtr node = events->item[i];
event_set.insert(get_attribute(node,"name"));
}
/*
* 初期状態 / 終了状態 を取得する
*/
string state_name = get_attribute(root,"initial");
string terminal_name = get_attribute(root,"terminal");
string fsm_name = get_attribute(root,"name");
cout << "FSM : " << fsm_name << endl;
/*
* 状態遷移表を駆動する
*/
while ( state_name != terminal_name ) {
/*
* state_name で示される State を見つける
*/
MSXML::IXMLDOMElementPtr state = find_element(root,"name",state_name);
if ( state == 0 ) {
cerr << "can't find state : " << state_name << endl;
break;
}
/*
* 現在の状態とイベント一覧を出力する
*/
cout << "state : " << state_name << endl;
cout << "enter an event (";
copy(event_set.begin(), event_set.end(), ostream_iterator<string>(cout,","));
cout << "exit) ? " << flush;
/*
* ユーザからのイベント入力
*/
string event_name;
cin >> event_name;
if ( event_name == "exit" )
break;
if ( event_set.find(event_name) == event_set.end() ) {
cerr << event_name << " is not valid." << endl;
//.........这里部分代码省略.........