libMVRgdtf 40bc00a
A library for GDTF and MVR
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
XMLCore.Xerces.h
Go to the documentation of this file.
1#ifndef DONT_USE_XERCES_AS_XMLLIB
2// XMLCore.Xerces.h
3#pragma once
4
5#ifndef XMLCore_h
6#define XMLCore_h
7
8#include "XercesSupport.h"
9
10
11namespace VectorworksMVR
12{
13namespace XML
14{
15 using namespace VectorworksMVR::Filing;
16
17 // ------------------------------------------------------------------------------------------------------
18 // Error constants
19 const short kNoError = 0;
20 const short kUnknownError = -1;
21 const short kInvalidPath = -2; // I.e., XML path, not file path
22 const short kElementNotFound = -3;
23 const short kAttributeNotFound = -4;
24 const short kCDATASectionNotFound = -5;
25 const short kMemoryError = -20;
26 const short kInvalidXMLHandle = -21;
27 const short kInvalidParameters = -22;
28 const short kParserError = -23; // From Xerces
29 const short kNoChildOrSiblingNodes = -24; // Node has no children, or succeeding or preceding sibling
30
31 // errors -30 - -60 are reserved for DOM errors
32 // errors -1000 - -2000 are reserved for XML errors
33
35
36 class DOMData
37 {
38 public:
39 DOMData();
40
41 void Initialize(void);
42 short ReleaseXML(void);
43 short CreateNewXMLDocument(const TXString& rootElementName);
44 short ReadXMLFile(short whichPath, const TXString& fileName);
45 short ReadXMLMemory(const TXString& xmlData);
46 short WriteXMLFile(short whichPath, const TXString& fileName);
47 short WriteXMLMemory(TXString& outXmlData);
48 short GetElementValue(const TXString& elementPath, TXString& value);
49 short SetElementValue(const TXString& elementPath, const TXString& value);
50 short DeleteElement(const TXString& elementPath);
51 short GetFirstChild(const TXString& elementPath, TXString& childName);
52 short GetNextElement(const TXString& elementPath, TXString& nextElementName);
53 short GetPreviousElement(const TXString& elementPath, TXString& nextElementName);
54 short SearchForElement(const TXString& elementPath, const TXString& searchElement, TXString& foundPath);
55 short GetAttributeValue(const TXString& element, const TXString& attribute, TXString& value);
56 short SetAttributeValue(const TXString& elementPath, const TXString& attribute, const TXString& value);
57 short DeleteAttribute(const TXString& elementPath, const TXString& attribute);
58 short SearchForAttribute(const TXString& startElementPath, const TXString& searchAttribute,
59 TXString& foundPath, TXString& attributeValue);
60 short GetCDATA(const TXString& elementPath, TXString& outData);
61 short SetCDATA(const TXString& elementPath, const TXString& data);
62 short DeleteCDATA(const TXString& elementPath);
63
64 // tools
65 public:
66 static TXString GetFullPath(short whichPath, const TXString& filename, bool inCreateIfMissing = false);
67
68 protected:
71 XercesDOMParserPtr m_pXercesDOMParser; // Pointer to Xerces DOM parser structure
72 DOMErrorHandlerPtr m_pErrorHandler; // Pointer to error handler structure
78
79 DOMNodePtr FindElementSearch(DOMNodePtr pStartNode, const TXString& element);
80 DOMNodePtr FindElement(DOMNodePtr pStartNode, const TXString& element, int skip = 0);
81 DOMNodePtr FindAttributeSearch(DOMNodePtr pStartNode, const TXString& attribute, TXString& value);
82 int FindChild(DOMNodePtr pParent, const TXString& element, DOMNodePtr& pFoundChild, int skip = 1);
83 TXString GetDelimitedString(const TXString& str, TXString& delimitedStr, const TXString& beginDelimiter, const TXString& endDelimiter);
84 short ParsePath(const TXString& nodePathStr, DOMNodePtr& pFoundNode, bool bCreate = false);
85 bool ValidTag(const TXString& tag);
87 short CreatePath(DOMNodePtr pNode, TXString& path);
88 short FindAttribute(const TXString& elementPath, const TXString& attribute, DOMNodePtr& pElement, DOMAttrPtr& pFoundAttr, bool bCreate = false);
89 short FindCDATASection(const TXString& elementPath, DOMNodePtr& pFoundNode, bool bCreate);
90 };
91
93
94 struct SXMLData
95 {
96 DOMData* fDOMData; // Pointer to DOMData structure
97 };
98
100
101 typedef std::map< Sint32 /* Context ID */, SXMLData> TXMLDataMap;
102
104
106 {
107 public:
109 virtual ~CXMLMemoryIOBuffer();
110
111 public:
112 virtual VCOMError VCOM_CALLTYPE GetDataSize(size_t& outSize);
113 virtual VCOMError VCOM_CALLTYPE CopyDataInto(void* pBuffer, size_t bufferSize);
114 virtual VCOMError VCOM_CALLTYPE SetData(void* pBuffer, size_t bufferSize);
115
116 public:
118 };
119
121 {
122 public:
123 DOMManager();
124 ~DOMManager();
125 Sint32 InitXML();
126 short ReleaseXML(Sint32 nDOMID);
127 DOMData* GetDOMPtr(Sint32 nDOMID); // Returns DOMData pointer to specified DOM context
128
129 private:
130 TXMLDataMap fXMLDataMap;
131 Sint32 fXMLDataMapNextID;
132 };
133}
134}
135
136#endif
137#endif
int32_t Sint32
Definition GSTypes.h:36
#define VCOM_CALLTYPE
Definition VectorworksMVR.h:93
DOMAttr * DOMAttrPtr
Definition XercesSupport.h:57
XERCES_CPP_NAMESPACE_USE typedef DOMImplementation * DOMImplementationPtr
Definition XercesSupport.h:51
XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument * DOMDocumentPtr
Definition XercesSupport.h:54
DOMElement * DOMElementPtr
Definition XercesSupport.h:55
DOMErrorHandler * DOMErrorHandlerPtr
Definition XercesSupport.h:53
DOMNode * DOMNodePtr
Definition XercesSupport.h:56
XercesDOMParser * XercesDOMParserPtr
Definition XercesSupport.h:52
Definition GSString.h:134
Definition XMLCore.Xerces.h:106
CXMLMemoryIOBuffer()
Definition XMLCore.Xerces.cpp:1840
TXString fBuffer
Definition XMLCore.Xerces.h:117
virtual VCOMError VCOM_CALLTYPE GetDataSize(size_t &outSize)
Definition XMLCore.Xerces.cpp:1848
virtual ~CXMLMemoryIOBuffer()
Definition XMLCore.Xerces.cpp:1844
virtual VCOMError VCOM_CALLTYPE SetData(void *pBuffer, size_t bufferSize)
Definition XMLCore.Xerces.cpp:1865
virtual VCOMError VCOM_CALLTYPE CopyDataInto(void *pBuffer, size_t bufferSize)
Definition XMLCore.Xerces.cpp:1854
Definition XMLCore.Xerces.h:37
DOMNodePtr m_pCurNode
Definition XMLCore.Xerces.h:75
bool m_bDocLoaded
Definition XMLCore.Xerces.h:69
DOMNodePtr FindAttributeSearch(DOMNodePtr pStartNode, const TXString &attribute, TXString &value)
Definition XMLCore.Xerces.cpp:785
short CreateNewXMLDocument(const TXString &rootElementName)
Definition XMLCore.Xerces.cpp:217
short GetPreviousElement(const TXString &elementPath, TXString &nextElementName)
Definition XMLCore.Xerces.cpp:1365
void Initialize(void)
Definition XMLCore.Xerces.cpp:194
short SetCDATA(const TXString &elementPath, const TXString &data)
Definition XMLCore.Xerces.cpp:1681
static TXString GetFullPath(short whichPath, const TXString &filename, bool inCreateIfMissing=false)
Definition XMLCore.Xerces.cpp:300
bool ValidTag(const TXString &tag)
Definition XMLCore.Xerces.cpp:933
short ParsePath(const TXString &nodePathStr, DOMNodePtr &pFoundNode, bool bCreate=false)
Definition XMLCore.Xerces.cpp:940
short GetAttributeValue(const TXString &element, const TXString &attribute, TXString &value)
Definition XMLCore.Xerces.cpp:1480
short ReleaseXML(void)
Definition XMLCore.Xerces.cpp:203
short WriteXMLFile(short whichPath, const TXString &fileName)
Definition XMLCore.Xerces.cpp:544
short ReadXMLMemory(const TXString &xmlData)
Definition XMLCore.Xerces.cpp:485
short SetAttributeValue(const TXString &elementPath, const TXString &attribute, const TXString &value)
Definition XMLCore.Xerces.cpp:1518
TXString GetDelimitedString(const TXString &str, TXString &delimitedStr, const TXString &beginDelimiter, const TXString &endDelimiter)
Definition XMLCore.Xerces.cpp:908
int FindChild(DOMNodePtr pParent, const TXString &element, DOMNodePtr &pFoundChild, int skip=1)
Definition XMLCore.Xerces.cpp:850
short SearchForAttribute(const TXString &startElementPath, const TXString &searchAttribute, TXString &foundPath, TXString &attributeValue)
Definition XMLCore.Xerces.cpp:1795
short FindAttribute(const TXString &elementPath, const TXString &attribute, DOMNodePtr &pElement, DOMAttrPtr &pFoundAttr, bool bCreate=false)
Definition XMLCore.Xerces.cpp:1419
short SetElementValue(const TXString &elementPath, const TXString &value)
Definition XMLCore.Xerces.cpp:1190
short DeleteElement(const TXString &elementPath)
Definition XMLCore.Xerces.cpp:1236
DOMElementPtr m_pDocRoot
Definition XMLCore.Xerces.h:74
DOMNodePtr FindElementSearch(DOMNodePtr pStartNode, const TXString &element)
Definition XMLCore.Xerces.cpp:724
short WriteXMLMemory(TXString &outXmlData)
Definition XMLCore.Xerces.cpp:647
short GetNextElement(const TXString &elementPath, TXString &nextElementName)
Definition XMLCore.Xerces.cpp:1314
DOMErrorHandlerPtr m_pErrorHandler
Definition XMLCore.Xerces.h:72
DOMData()
Definition XMLCore.Xerces.cpp:182
DOMImplementationPtr m_pImpl
Definition XMLCore.Xerces.h:70
int m_pCurSkipCount
Definition XMLCore.Xerces.h:77
short DeleteCDATA(const TXString &elementPath)
Definition XMLCore.Xerces.cpp:1716
short ReadXMLFile(short whichPath, const TXString &fileName)
Definition XMLCore.Xerces.cpp:388
short CreatePath(DOMNodePtr pNode, TXString &path)
Definition XMLCore.Xerces.cpp:1112
XercesDOMParserPtr m_pXercesDOMParser
Definition XMLCore.Xerces.h:71
DOMNodePtr FindElement(DOMNodePtr pStartNode, const TXString &element, int skip=0)
Definition XMLCore.Xerces.cpp:769
DOMDocumentPtr m_plDomDocument
Definition XMLCore.Xerces.h:73
short DeleteAttribute(const TXString &elementPath, const TXString &attribute)
Definition XMLCore.Xerces.cpp:1573
short GetElementValue(const TXString &elementPath, TXString &value)
Definition XMLCore.Xerces.cpp:1147
short GetFirstChild(const TXString &elementPath, TXString &childName)
Definition XMLCore.Xerces.cpp:1266
short FindCDATASection(const TXString &elementPath, DOMNodePtr &pFoundNode, bool bCreate)
Definition XMLCore.Xerces.cpp:1606
short SearchForElement(const TXString &elementPath, const TXString &searchElement, TXString &foundPath)
Definition XMLCore.Xerces.cpp:1750
int m_pSkipCount
Definition XMLCore.Xerces.h:76
short GetCDATA(const TXString &elementPath, TXString &outData)
Definition XMLCore.Xerces.cpp:1646
DOMNodePtr GetTextNode(DOMNodePtr pNode)
Definition XMLCore.Xerces.cpp:1088
Definition XMLCore.Xerces.h:121
short ReleaseXML(Sint32 nDOMID)
Definition XMLCore.Xerces.cpp:141
Sint32 InitXML()
Definition XMLCore.Xerces.cpp:117
DOMData * GetDOMPtr(Sint32 nDOMID)
Definition XMLCore.Xerces.cpp:164
DOMManager()
Definition XMLCore.Xerces.cpp:70
~DOMManager()
Definition XMLCore.Xerces.cpp:87
Definition IFileIdentifier.h:15
const short kElementNotFound
Definition XMLCore.Xerces.h:22
const short kInvalidPath
Definition XMLCore.Xerces.h:21
const short kNoChildOrSiblingNodes
Definition XMLCore.Xerces.h:29
const short kNoError
Definition XMLCore.Xerces.h:19
const short kUnknownError
Definition XMLCore.Xerces.h:20
const short kCDATASectionNotFound
Definition XMLCore.Xerces.h:24
const short kInvalidXMLHandle
Definition XMLCore.Xerces.h:26
const short kParserError
Definition XMLCore.Xerces.h:28
const short kMemoryError
Definition XMLCore.Xerces.h:25
std::map< Sint32, SXMLData > TXMLDataMap
Definition XMLCore.Xerces.h:101
const short kInvalidParameters
Definition XMLCore.Xerces.h:27
const short kAttributeNotFound
Definition XMLCore.Xerces.h:23
Definition CieColor.h:9
uint32_t VCOMError
Definition VectorworksMVR.h:119
Definition XMLCore.Xerces.h:95
DOMData * fDOMData
Definition XMLCore.Xerces.h:96