From 024d43bd2ed9745999ecd2fad560d6e97e1395ed Mon Sep 17 00:00:00 2001
From: xj qian <qianxj15@sina.com>
Date: 星期五, 06 十二月 2024 10:13:44 +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