From d912c0e116080cf2583fc276fde2c530b9f8f956 Mon Sep 17 00:00:00 2001 From: xj qian <qianxj15@sina.com> Date: 星期三, 11 十二月 2024 16:33:18 +0800 Subject: [PATCH] update --- jrj/xframe/kobject/kxml.hpp | 386 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 385 insertions(+), 1 deletions(-) diff --git a/jrj/xframe/kobject/kxml.hpp b/jrj/xframe/kobject/kxml.hpp index 8606072..a41b9fc 100644 --- a/jrj/xframe/kobject/kxml.hpp +++ b/jrj/xframe/kobject/kxml.hpp @@ -1,6 +1,8 @@ #pragma once typedef wchar_t* BSTR ; + +#if 1 namespace Hxsoft { namespace XFrame { class KXMLDOMNode; @@ -14,6 +16,8 @@ class KXMLDOMProcessingInstruction; class KXMLDOMNodeList; class KXMLDOMParseError; + class KXMLDOMParseError; + class KXMLDOMSchemaCollection; enum KDOMNodeType { @@ -212,6 +216,13 @@ wchar_t* transformNode(KXMLDOMNode); KXMLDOMNode transformNodeToObject(KXMLDOMNode); + public: + KXMLDOMParseError parseError(); + + public: + KXMLDOMSchemaCollection namespaces(); + KXMLDOMSchemaCollection schemas(); + bool setSchemas(KXMLDOMSchemaCollection collection); KXMLDOMParseError validate(); //bool validateNode(); public: @@ -226,6 +237,12 @@ { if (documentElement())removeChild(documentElement()); } + public: + static bool ValidSchema(const wchar_t* pSchema, BSTR& errText); + static bool ValidSchema(KXMLDOMDocument xml, KXMLDOMDocument schema, BSTR& errText); + public: + static int GetSchemaXml(LPTSTR pSchema, KXMLDOMDocument& x); + }; class KXMLDOMAttribute : public KXMLDOMNode @@ -275,6 +292,38 @@ KXMLDOMDocumentFragment(void* impl) :KXMLDOMNode(impl) {} }; + class KXMLDOMParseError : public KXMLDOMNode + { + public: + KXMLDOMParseError(KXMLDOMNode& v); + KXMLDOMParseError(void* impl) :KXMLDOMNode(impl) {} + public: + int errorCode(); + int filepos(); + int line(); + int linepos(); + BSTR reason(); + BSTR srcText(); + BSTR url(); + }; + + class KXMLDOMSchemaCollection + { + public: + protected: + void* impl; + public: + KXMLDOMSchemaCollection(void* impl); + KXMLDOMSchemaCollection(); + KXMLDOMSchemaCollection(LPARAM p); + ~KXMLDOMSchemaCollection(); + public: + KXMLDOMSchemaCollection(const KXMLDOMSchemaCollection& rhs); + const KXMLDOMSchemaCollection& operator =(const KXMLDOMSchemaCollection& rhs); + public: + void* getImpl(); + }; + }} @@ -283,7 +332,10 @@ using KXMLDOMNode=Hxsoft::XFrame::KXMLDOMNode; using KXMLDOMElement=Hxsoft::XFrame::KXMLDOMElement; using KXMLDOMNodeList = Hxsoft::XFrame::KXMLDOMNodeList; +using KXMLDOMParseError = Hxsoft::XFrame::KXMLDOMParseError; +using KXMLDOMSchemaCollection = Hxsoft::XFrame::KXMLDOMSchemaCollection; +/* class KXMLDOMParseError : public KXMLDOMNode { public: @@ -298,7 +350,7 @@ BSTR srcText(); BSTR url(); }; - +*/ class KXMLDOMElementPtr { private: @@ -315,3 +367,335 @@ KXMLDOMElement* operator -> () { return m_pElement; } }; +#endif + +#if 0 +namespace Hxsoft { + namespace XFrame + { + class KXMLDOMNode; + class KXMLDOMAttribute; + class KXMLDOMElement; + class KXMLDOMCDATASection; + class KXMLDOMDocumentFragment; + class KXMLDOMComment; + class KXMLDOMEntityReference; + class KXMLDOMTextNode; + class KXMLDOMProcessingInstruction; + class KXMLDOMNodeList; + class KXMLDOMParseError; + class KXMLDOMSchemaCollection; + + enum KDOMNodeType + { + KNODE_INVALID = 0, + KNODE_ELEMENT = (KNODE_INVALID + 1), + KNODE_ATTRIBUTE = (KNODE_ELEMENT + 1), + KNODE_TEXT = (KNODE_ATTRIBUTE + 1), + KNODE_CDATA_SECTION = (KNODE_TEXT + 1), + KNODE_ENTITY_REFERENCE = (KNODE_CDATA_SECTION + 1), + KNODE_ENTITY = (KNODE_ENTITY_REFERENCE + 1), + KNODE_PROCESSING_INSTRUCTION = (KNODE_ENTITY + 1), + KNODE_COMMENT = (KNODE_PROCESSING_INSTRUCTION + 1), + KNODE_DOCUMENT = (KNODE_COMMENT + 1), + KNODE_DOCUMENT_TYPE = (KNODE_DOCUMENT + 1), + KNODE_DOCUMENT_FRAGMENT = (KNODE_DOCUMENT_TYPE + 1), + KNODE_NOTATION = (KNODE_DOCUMENT_FRAGMENT + 1) + }; + + class KXMLDOMNodeList + { + public: + long length(); + bool length(long&); + bool length(long*); + bool get_length(long* v) { return length(v); } + KXMLDOMNode item(int index); + bool item(int index, KXMLDOMNode& node); + bool item(int index, KXMLDOMNode* node); + bool get_item(int index, KXMLDOMNode* node) { return item(index, node); } + private: + void* impl; + public: + void* getImpl(); + public: + KXMLDOMNodeList(void* impl); + KXMLDOMNodeList() :impl(nullptr) {} + ~KXMLDOMNodeList(); + public: + operator bool() { return impl ? true : false; } + public: + KXMLDOMNodeList(const KXMLDOMNodeList& rhs); + const KXMLDOMNodeList& operator =(const KXMLDOMNodeList& rhs); + }; + + class KXMLDOMElement; + class KXMLDOMAttribute; + class KXMLDOMDocument; + class KXMLDOMNode { + public: + // attributes + // baseName + KXMLDOMNodeList childNodes(); + // dataType + // definition + KXMLDOMNode firstChild(); + KXMLDOMNode lastChild(); + // namespaceURI + // namespaceURI + KXMLDOMNode nextSibling(); + const wchar_t* nodeName(); + KDOMNodeType nodeType(); + KDOMNodeType get_nodeType() { return nodeType(); } + // nodeTypedValue + // nodeTypeString + // nodeValue + KXMLDOMDocument ownerDocument(); + KXMLDOMNode parentNode(); + // parsed + // prefix + KXMLDOMNode previousSibling(); + // specified + const wchar_t* tagName(); + const wchar_t* text(); + const wchar_t* xml(); + + bool get_tagName(BSTR& str); + bool get_text(BSTR& str); + bool get_xml(BSTR& str); + bool get_tagName(BSTR* str) { return get_tagName(*str); } + bool get_text(BSTR* str) { return get_text(*str); } + bool get_xml(BSTR* str) { return get_xml(*str); } + bool settext(const wchar_t* txt); + bool put_text(const wchar_t* txt) { return settext(txt); } + + + bool appendChild(KXMLDOMNode); + KXMLDOMNode cloneNode(bool); + wchar_t* getAttribute(const wchar_t* name); + void getAttribute(const wchar_t* name, void* vt); + KXMLDOMAttribute getAttributeNode(const wchar_t* name); + KXMLDOMNodeList getElementsByTagName(const wchar_t* name); + bool hasChildNodes(); + bool insertBefore(KXMLDOMNode newnode, KXMLDOMNode at); + void normalize(); + bool removeAttribute(const wchar_t* name); + bool removeAttributeNode(KXMLDOMNode attr); + bool removeChild(KXMLDOMNode val); + bool replaceChild(KXMLDOMNode newChild, KXMLDOMNode oldChild); + KXMLDOMNodeList selectNodes(const wchar_t*); + KXMLDOMNode selectSingleNode(const wchar_t*); + bool selectNodes(const wchar_t*, KXMLDOMNodeList& pNodeList); + bool selectSingleNode(const wchar_t*, KXMLDOMNode& pNode); + bool selectNodes(const wchar_t*, KXMLDOMNodeList* pNodeList); + bool selectSingleNode(const wchar_t*, KXMLDOMNode* pNode); + void setAttribute(const wchar_t* name, const wchar_t* value); + void setAttribute(const wchar_t* name, long val); + void setAttribute(const wchar_t* name, int val); + void setAttribute(const wchar_t* name, double val); + wchar_t* transformNode(KXMLDOMNode stylesheet); + KXMLDOMNode transformNodeToObject(KXMLDOMNode); + protected: + void* impl; + public: + KXMLDOMNode(void* impl); + KXMLDOMNode() :KXMLDOMNode(nullptr) {} + ~KXMLDOMNode(); + KXMLDOMNode(LPARAM p) :KXMLDOMNode((void*)p) { + AddRef(); + } + public: + KXMLDOMNode(const KXMLDOMNode& rhs); + const KXMLDOMNode& operator =(const KXMLDOMNode& rhs); + public: + operator bool() { return impl ? true : false; } + public: + void* getImpl(); + public: + unsigned long AddRef(); + unsigned long Release(); + public: + bool operator !=(KXMLDOMNode& rhs) { return rhs.getImpl() != getImpl(); } + bool operator ==(KXMLDOMNode& rhs) { return rhs.getImpl() == getImpl(); } + }; + + class KXMLDOMElement : public KXMLDOMNode + { + public: + KXMLDOMElement(KXMLDOMNode v); + KXMLDOMElement(void* impl) :KXMLDOMNode(impl) {} + KXMLDOMElement() :KXMLDOMNode() {} + public: + KXMLDOMElement(LPARAM p) :KXMLDOMNode(p) {} + + }; + class KXMLDOMAttribute : public KXMLDOMNode + { + public: + KXMLDOMAttribute(KXMLDOMNode& v); + KXMLDOMAttribute(void* impl) :KXMLDOMNode(impl) {} + }; + class KXMLDOMCDATASection : public KXMLDOMNode + { + public: + KXMLDOMCDATASection(KXMLDOMNode& v); + KXMLDOMCDATASection(void* impl) :KXMLDOMNode(impl) {} + }; + + + class KXMLDOMDocument : public KXMLDOMNode + { + public: + bool operator !() + { + return !impl || !documentElement(); + } + public: + const wchar_t* text(); + const wchar_t* url(); + const wchar_t* xml(); + KXMLDOMElement documentElement(); + bool documentElement(KXMLDOMElement* pDoc); + bool get_documentElement(KXMLDOMElement* pDoc) { return documentElement(pDoc); } + public: + KXMLDOMParseError parseError(); + public: + bool appendChild(KXMLDOMNode); + KXMLDOMAttribute createAttribute(const wchar_t*); + KXMLDOMCDATASection createCDATASection(const wchar_t*); + KXMLDOMComment createComment(const wchar_t*); + KXMLDOMDocumentFragment createDocumentFragment(); + KXMLDOMElement createElement(const wchar_t*); + bool createElement(const wchar_t*, KXMLDOMElement* ele); + KXMLDOMEntityReference createEntityReference(const wchar_t*); + KXMLDOMNode createNode(KDOMNodeType ty, const wchar_t* name, const wchar_t* ns); + KXMLDOMProcessingInstruction createProcessingInstruction(const wchar_t* target, const wchar_t* data); + KXMLDOMTextNode createTextNode(const wchar_t*); + + KXMLDOMNodeList getElementsByTagName(const wchar_t*); + wchar_t* getProperty(const wchar_t*); + bool setProperty(const wchar_t* prop, const wchar_t* val); + bool setProperty(const wchar_t* prop, bool val); + bool hasChildNodes(); + bool importNode(KXMLDOMNode); + bool insertBefore(KXMLDOMNode newnode, KXMLDOMNode at); + bool load(const wchar_t*); + bool loadXML(const wchar_t*); + KXMLDOMNode nodeFromID(const wchar_t*); + bool removeChild(KXMLDOMNode); + bool replaceChild(KXMLDOMNode newChild, KXMLDOMNode oldChild); + bool save(const wchar_t*); + KXMLDOMNodeList selectNodes(const wchar_t*); + KXMLDOMNode selectSingleNode(const wchar_t*); + bool selectNodes(const wchar_t*, KXMLDOMNodeList& pNodeList); + bool selectSingleNode(const wchar_t*, KXMLDOMNode& pNode); + bool selectNodes(const wchar_t*, KXMLDOMNodeList* pNodeList); + bool selectSingleNode(const wchar_t*, KXMLDOMNode* pNode); + + wchar_t* transformNode(KXMLDOMNode); + KXMLDOMNode transformNodeToObject(KXMLDOMNode); + + public: + KXMLDOMSchemaCollection namespaces(); + KXMLDOMSchemaCollection schemas(); + bool setSchemas(KXMLDOMSchemaCollection collection); + KXMLDOMParseError validate(); + //bool validateNode(); + public: + KXMLDOMDocument(void* impl); + KXMLDOMDocument(); + ~KXMLDOMDocument(); + public: + const KXMLDOMDocument& operator =(const KXMLDOMDocument& rhs); + KXMLDOMDocument(const KXMLDOMDocument& rhs); + public: + void Reset() + { + if (documentElement())removeChild(documentElement()); + } + public: + static bool ValidSchema(const wchar_t* pSchema, BSTR& errText); + static bool ValidSchema(KXMLDOMDocument xml, KXMLDOMDocument schema, BSTR& errText); + public: + static int GetSchemaXml(LPTSTR pSchema, KXMLDOMDocument& x); + }; + + + class KXMLDOMComment : public KXMLDOMNode + { + public: + KXMLDOMComment(KXMLDOMNode& v); + KXMLDOMComment(void* impl) :KXMLDOMNode(impl) {} + }; + + class KXMLDOMEntityReference : public KXMLDOMNode + { + public: + KXMLDOMEntityReference(KXMLDOMNode& v); + KXMLDOMEntityReference(void* impl) :KXMLDOMNode(impl) {} + }; + + class KXMLDOMTextNode : public KXMLDOMNode + { + public: + KXMLDOMTextNode(KXMLDOMNode& v); + KXMLDOMTextNode(void* impl) :KXMLDOMNode(impl) {} + }; + + class KXMLDOMProcessingInstruction : public KXMLDOMNode + { + public: + KXMLDOMProcessingInstruction(KXMLDOMNode& v); + KXMLDOMProcessingInstruction(void* impl) :KXMLDOMNode(impl) {} + }; + class KXMLDOMDocumentFragment : public KXMLDOMNode + { + public: + KXMLDOMDocumentFragment(KXMLDOMNode& v); + KXMLDOMDocumentFragment(void* impl) :KXMLDOMNode(impl) {} + }; + + class KXMLDOMParseError : public KXMLDOMNode + { + public: + KXMLDOMParseError(KXMLDOMNode& v); + KXMLDOMParseError(void* impl) :KXMLDOMNode(impl) {} + public: + int errorCode(); + int filepos(); + int line(); + int linepos(); + BSTR reason(); + BSTR srcText(); + BSTR url(); + }; + + class KXMLDOMSchemaCollection + { + public: + protected: + void* impl; + public: + KXMLDOMSchemaCollection(void* impl); + KXMLDOMSchemaCollection(); + KXMLDOMSchemaCollection(LPARAM p); + ~KXMLDOMSchemaCollection(); + public: + KXMLDOMSchemaCollection(const KXMLDOMSchemaCollection& rhs); + const KXMLDOMSchemaCollection& operator =(const KXMLDOMSchemaCollection& rhs); + public: + void* getImpl(); + }; + + } +} + +using KXMLDOMDocument = Hxsoft::XFrame::KXMLDOMDocument; +using KXMLDOMNode = Hxsoft::XFrame::KXMLDOMNode; +using KXMLDOMElement = Hxsoft::XFrame::KXMLDOMElement; +using KXMLDOMNodeList = Hxsoft::XFrame::KXMLDOMNodeList; +using KXMLDOMParseError = Hxsoft::XFrame::KXMLDOMParseError; +using KXMLDOMSchemaCollection = Hxsoft::XFrame::KXMLDOMSchemaCollection; + +#endif + -- Gitblit v1.9.3