Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef XMLDataSourceH
00033 #define XMLDataSourceH
00034
00035 #include <zeusbase/System/Interfaces/IXObject.hpp>
00036 #include <zeusbase/System/Interfaces/IXMLDocument.hpp>
00037 #include <zeusbase/System/StringMap.hpp>
00038
00039
00040 BEGIN_NAMESPACE_Zeus
00041
00042
00043
00047
00048 zeusbase_class TXMLDataSource : public IValueType
00049 {
00050 public:
00051 TXMLDataSource();
00052 TXMLDataSource(NAMESPACE_Zeus::IXMLDocument& rDocument);
00053 virtual ~TXMLDataSource();
00054
00055 void closeXML();
00056 bool isAvailable() const;
00057 void setXMLDocument(NAMESPACE_Zeus::IXMLDocument& rDocument);
00058
00059
00060 Retval loadXML(NAMESPACE_Zeus::IXMLDocument*& rpDocument);
00061 Retval loadXObjects(IXObject*& rpObject, bool dDoUnfreeze = true, bool bKeepXObjectAfterClosing = false);
00062
00063 TString getDocumentStream() const;
00064
00065
00066 Retval selectNode(const IString& rXPath, IXMLNode*& rpNode);
00067 Retval selectNodes(const IString& rXPath, IXPathResults*& rpResults);
00068 Retval selectNodeValue(const IString& rXPath, IString& rValue);
00069 Retval selectObject(const IString& rXObjectPath, IXObject*& rpObject);
00070 Retval selectObjects(const IString& rXObjectPath, IXObjectCollection*& rpCollection);
00071 Retval selectCastedObject(const IString& rXObjectPath, const InterfaceID& rInterfaceID, IZUnknown*& rpObject);
00072
00073 void useNamespace(const IString& rPrefix, const IString& rNamespace);
00074
00075 Retval writeNodeValue(const IString& rXPath, const IString& rValue);
00076
00077 protected:
00078
00079 private:
00081 TAutoPtr<NAMESPACE_Zeus::IXMLDocument> m_ptrDocument;
00083 TAutoPtr<IXObject> m_ptrRootObject;
00085 bool m_bKeepXObjectAfterClosing;
00087 TStringMap<TString> m_mapPrefix;
00088
00089
00090 void removeInstances();
00091 };
00092
00093
00094
00097
00098 inline bool TXMLDataSource::isAvailable() const
00099 {
00100 return (m_ptrDocument != NULL);
00101 }
00102
00103
00104 END_NAMESPACE_Zeus
00105
00106 #endif