|
|
|
|
|
|
||
|
/****************************************************************************/ /**
**/ /** Copyright
(c) 2005 Diodia Software (http://www.diodia.com/) **/ /**
**/ /** Use in any
form with or without modification for commercial and non- **/ /** commercial
purposes is permitted. **/ /**
**/ /****************************************************************************/ #include <stdafx.h>
#include "XmlHelpers.h"
static IXMLDOMNodeList *SelectXmlNodes(IXMLDOMElement *Element, const char *Xpath, long *Length);
/****************************************************************************/ /* /* DESCRIPTION : Select a node in XML document. /* /* RETURN VALUE: Node - if found /* NULL - otherwise /* /****************************************************************************/ IXMLDOMNode *SelectXmlNode(IXMLDOMDocument *XmlDoc, const char *Xpath) { IXMLDOMNode *Node = NULL; BSTR Path; HRESULT Result;
Path = SysAllocString((bstr_t) Xpath); Result = XmlDoc->selectSingleNode(Path, &Node); SysFreeString(Path);
if (FAILED(Result)) return NULL;
return Node; }
/****************************************************************************/ /* /* DESCRIPTION : Select a node in XML document. /* /* RETURN VALUE: Node - if found /* NULL - otherwise /* /****************************************************************************/ IXMLDOMNode *SelectXmlNode(IXMLDOMNode *Base, const char *Xpath) { IXMLDOMElement *Element = NULL; IXMLDOMNode *Node = NULL; BSTR Path; HRESULT Result;
Result = Base->QueryInterface(IID_IXMLDOMElement, (void **) &Element); if (FAILED(Result) || !Element) return false;
Path = SysAllocString((bstr_t) Xpath); Result = Element->selectSingleNode(Path, &Node); SysFreeString(Path);
Element->Release();
if (FAILED(Result)) return NULL;
return Node; }
/****************************************************************************/ /* /* DESCRIPTION : Select multiple nodes in XML document. /* /* RETURN VALUE: Node list - if any nodes found /* NULL - otherwise /* /****************************************************************************/ IXMLDOMNodeList *SelectXmlNodes(IXMLDOMDocument *XmlDoc, const char *Xpath, long *Length) { IXMLDOMElement *Root = NULL; IXMLDOMNodeList *NodeList; HRESULT Result;
if (Length) *Length = 0;
Result = XmlDoc->get_documentElement(&Root); if (FAILED(Result) || Root == NULL) return NULL;
NodeList = SelectXmlNodes(Root, Xpath, Length);
Root->Release();
return NodeList; }
/****************************************************************************/ /* /* DESCRIPTION : Select multiple nodes in XML document. /* /* RETURN VALUE: Node list - if any nodes found /* NULL - otherwise /* /****************************************************************************/ IXMLDOMNodeList *SelectXmlNodes(IXMLDOMNode *Base, const char *Xpath, long *Length) { IXMLDOMElement *Element = NULL; IXMLDOMNodeList *NodeList = NULL; HRESULT Result;
if (Length) *Length = 0;
Result = Base->QueryInterface(IID_IXMLDOMElement, (void **) &Element); if (FAILED(Result) || !Element) return false;
NodeList = SelectXmlNodes(Element, Xpath, Length);
Element->Release();
return NodeList; }
/****************************************************************************/ /* /* DESCRIPTION : Select multiple nodes in XML document. /* /* RETURN VALUE: Node list - if any nodes found /* NULL - otherwise /* /****************************************************************************/ static IXMLDOMNodeList *SelectXmlNodes(IXMLDOMElement *Element, const char *Xpath, long *Length) { IXMLDOMNodeList *NodeList = NULL; BSTR Path; long ListLength; HRESULT Result;
Path = SysAllocString((bstr_t) Xpath); Result = Element->selectNodes(Path, &NodeList); SysFreeString(Path);
if (FAILED(Result)) return NULL;
Result = NodeList->get_length(&ListLength); if (FAILED(Result) || ListLength <= 0) { NodeList->Release(); return NULL; }
if (Length) *Length = ListLength;
return NodeList; }
|
Source Files Commands.cpp Context.cpp CreatePath.cpp DateParser.cpp DlgEditFeedC.cpp DlgManageFeedsC.cpp Hook.cpp Iso8601.cpp MsXmlMisc.cpp MsXmlSelect.cpp RegistryNotify.cpp RegistryUtil.cpp RSS.cpp RSS.def RSS.idl RssAction.cpp RssDownloader.cpp RssFeed.cpp RssHelpers.cpp RssInit.cpp RssItem.cpp RssMultiFeed.cpp RssTimer.cpp RssXml.cpp StdAfx.cpp Header Files Commands.h ContextC.h DateParser.h DlgEditFeedC.h DlgManageFeedsC.h Helper.h HookC.h RegistryNotify.h RegistryNotifyC.h Resource.h RssDownloaderC.h RssFeedC.h RssHelpers.h RssItemC.h RssMultiFeedC.h StdAfx.h ThreadObject.h XmlHelpers.h Resource Files about.htm DiodiaLogoSmall.gif logo.bmp manifest.xml read.bmp RSS.rc RSS.rgs ToolBandLayout.xml |
|
|
© 2002-2008 Diodia Software |
||