From bd09edf1b441dcc6ab098f277bea86a72c009879 Mon Sep 17 00:00:00 2001 From: xj qian <qianxj15@sina.com> Date: 星期四, 05 十二月 2024 17:30:21 +0800 Subject: [PATCH] update --- jrj/xframe/kobject/kxml.hpp | 99 ++++++++++++++++++++++++++++++++++--------------- 1 files changed, 68 insertions(+), 31 deletions(-) diff --git a/jrj/xframe/kobject/kxml.hpp b/jrj/xframe/kobject/kxml.hpp index 9baa235..8606072 100644 --- a/jrj/xframe/kobject/kxml.hpp +++ b/jrj/xframe/kobject/kxml.hpp @@ -13,7 +13,7 @@ class KXMLDOMTextNode; class KXMLDOMProcessingInstruction; class KXMLDOMNodeList; - class KXMLParseError; + class KXMLDOMParseError; enum KDOMNodeType { @@ -133,13 +133,43 @@ KXMLDOMNode(const KXMLDOMNode& rhs); const KXMLDOMNode& operator =(const KXMLDOMNode& rhs); public: + unsigned long AddRef(); + unsigned long Release(); + public: + LPARAM ptr() + { + this->AddRef(); + return (LPARAM)this->getImpl(); + } + KXMLDOMNode(LPARAM p) :KXMLDOMNode((void*)p) { + AddRef(); + } + public: operator bool() { return impl ? true : false; } + bool operator !=(KXMLDOMNode& rhs) { return rhs.getImpl() != getImpl(); } + bool operator ==(KXMLDOMNode& rhs) { return rhs.getImpl() == getImpl(); } public: void* getImpl(); }; + + class KXMLDOMElement : public KXMLDOMNode + { + public: + KXMLDOMElement(KXMLDOMNode v); + KXMLDOMElement(void* impl) :KXMLDOMNode(impl) {} + KXMLDOMElement() :KXMLDOMNode() {} + public: + KXMLDOMElement(LPARAM p) :KXMLDOMNode(p) {} + }; + class KXMLDOMDocument : public KXMLDOMNode { + public: + bool operator !() + { + return !impl || !documentElement(); + } public: const wchar_t* text(); const wchar_t* url(); @@ -182,7 +212,7 @@ wchar_t* transformNode(KXMLDOMNode); KXMLDOMNode transformNodeToObject(KXMLDOMNode); - KXMLParseError validate(); + KXMLDOMParseError validate(); //bool validateNode(); public: KXMLDOMDocument(void* impl); @@ -191,15 +221,13 @@ public: const KXMLDOMDocument& operator =(const KXMLDOMDocument& rhs); KXMLDOMDocument(const KXMLDOMDocument& rhs); + public: + void Reset() + { + if (documentElement())removeChild(documentElement()); + } }; - class KXMLDOMElement : public KXMLDOMNode - { - public: - KXMLDOMElement( KXMLDOMNode v); - KXMLDOMElement(void* impl) :KXMLDOMNode(impl) {} - KXMLDOMElement() :KXMLDOMNode() {} - }; class KXMLDOMAttribute : public KXMLDOMNode { public: @@ -247,28 +275,6 @@ KXMLDOMDocumentFragment(void* impl) :KXMLDOMNode(impl) {} }; - class KXMLParseError : public KXMLDOMNode - { - public: - KXMLParseError(KXMLDOMNode& v); - KXMLParseError(void* impl) :KXMLDOMNode(impl) {} - }; - - class KXMLDOMElementPtr - { - private: - KXMLDOMElement* m_pElement; - public: - KXMLDOMElementPtr(LPARAM ele) :m_pElement((KXMLDOMElement*)ele) {} - KXMLDOMElementPtr(KXMLDOMElement* pEle) :m_pElement((KXMLDOMElement*)pEle) {} - //KXMLDOMElementPtr(KXMLDOMElement ele) :m_pElement(new KXMLDOMElement(ele)) {} - public: - KXMLDOMElement* value() { return m_pElement; } - public: - operator KXMLDOMElement* () { return m_pElement; } - operator KXMLDOMElement& () { return *m_pElement; } - KXMLDOMElement* operator -> () { return m_pElement; } - }; }} @@ -278,3 +284,34 @@ using KXMLDOMElement=Hxsoft::XFrame::KXMLDOMElement; using KXMLDOMNodeList = Hxsoft::XFrame::KXMLDOMNodeList; +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 KXMLDOMElementPtr +{ +private: + KXMLDOMElement* m_pElement; +public: + KXMLDOMElementPtr(LPARAM ele) :m_pElement((KXMLDOMElement*)ele) {} + KXMLDOMElementPtr(KXMLDOMElement* pEle) :m_pElement(pEle) {} + KXMLDOMElementPtr(KXMLDOMElement ele) :m_pElement(new KXMLDOMElement(ele)) {} +public: + KXMLDOMElement* value() { return m_pElement; } +public: + operator KXMLDOMElement* () { return m_pElement; } + operator KXMLDOMElement& () { return *m_pElement; } + KXMLDOMElement* operator -> () { return m_pElement; } +}; + -- Gitblit v1.9.3