1.1 --- a/README.txt Wed Sep 10 00:35:11 2008 +0200
1.2 +++ b/README.txt Fri Sep 12 01:03:56 2008 +0200
1.3 @@ -12,6 +12,8 @@
1.4 specifications. Instead, you should now use the textContent property to get
1.5 such data.
1.6
1.7 +From libxml2dom 0.5, some XML-RPC nodes employ different properties.
1.8 +
1.9 Contact, Copyright and Licence Information
1.10 ------------------------------------------
1.11
1.12 @@ -65,6 +67,14 @@
1.13 libxml2dom.macrolib implementation, too). A way is needed to get libxml2 to do
1.14 the node copying itself.
1.15
1.16 +New in libxml2dom 0.5 (Changes since libxml2dom 0.4.7)
1.17 +------------------------------------------------------
1.18 +
1.19 + * Changed some XML-RPC node properties in order to retain underlying DOM
1.20 + properties such as value and data.
1.21 + * Added convenience methods to the XML-RPC implementation, with combined
1.22 + node creation and insertion if requested.
1.23 +
1.24 New in libxml2dom 0.4.7 (Changes since libxml2dom 0.4.6)
1.25 --------------------------------------------------------
1.26
2.1 --- a/libxml2dom/xmlrpc.py Wed Sep 10 00:35:11 2008 +0200
2.2 +++ b/libxml2dom/xmlrpc.py Fri Sep 12 01:03:56 2008 +0200
2.3 @@ -41,7 +41,7 @@
2.4 "Convenience modifications to nodes specific to libxml2dom.xmlrpc."
2.5
2.6 def add_or_replace_element(self, new_element):
2.7 - elements = self.xpath("*")
2.8 + elements = self.xpath(new_element.localName)
2.9 if elements:
2.10 self.replaceChild(new_element, elements[0])
2.11 else:
2.12 @@ -90,6 +90,9 @@
2.13 def _fault(self):
2.14 return (self.xpath("./fault") or [None])[0]
2.15
2.16 + def _params(self):
2.17 + return (self.xpath("./params") or [None])[0]
2.18 +
2.19 def _methodNameElement(self):
2.20 return (self.xpath("./methodName") or [None])[0]
2.21
2.22 @@ -109,6 +112,9 @@
2.23 def _parameterValues(self):
2.24 return [value.container.contents for value in self.xpath("./params/param/value")]
2.25
2.26 + def _parameters(self):
2.27 + return self.xpath("./params/param")
2.28 +
2.29 # Node construction methods.
2.30
2.31 def createMethodName(self, insert=0):
2.32 @@ -130,14 +136,19 @@
2.33 return e
2.34
2.35 fault = property(_fault)
2.36 + params = property(_params)
2.37 methodNameElement = property(_methodNameElement)
2.38 methodName = property(_methodName, _setMethodName)
2.39 parameterValues = property(_parameterValues)
2.40 + parameters = property(_parameters)
2.41
2.42 class XMLRPCParametersElement(XMLRPCNode):
2.43
2.44 "An XML-RPC parameters/params element."
2.45
2.46 + def _parameters(self):
2.47 + return self.xpath("./param")
2.48 +
2.49 # Node construction methods.
2.50
2.51 def createParameter(self, insert=0):
2.52 @@ -146,10 +157,15 @@
2.53 self.appendChild(e)
2.54 return e
2.55
2.56 + parameters = property(_parameters)
2.57 +
2.58 class XMLRPCParameterElement(XMLRPCNode):
2.59
2.60 "An XML-RPC parameter/param element."
2.61
2.62 + def _valueElement(self):
2.63 + return (self.xpath("./value") or [None])[0]
2.64 +
2.65 # Node construction methods.
2.66
2.67 def createValue(self, typename=None, insert=0):
2.68 @@ -161,11 +177,13 @@
2.69 self.add_or_replace_element(value)
2.70 return value
2.71
2.72 + valueElement = property(_valueElement)
2.73 +
2.74 class XMLRPCArrayElement(XMLRPCNode):
2.75
2.76 "An XML-RPC array element."
2.77
2.78 - def _data(self):
2.79 + def _dataElement(self):
2.80 return (self.xpath("./data") or [None])[0]
2.81
2.82 def _contents(self):
2.83 @@ -199,7 +217,7 @@
2.84 self.add_or_replace_element(e)
2.85 return e
2.86
2.87 - data = property(_data)
2.88 + dataElement = property(_dataElement)
2.89 contents = property(_contents)
2.90
2.91 class XMLRPCStructElement(XMLRPCNode):
2.92 @@ -266,7 +284,7 @@
2.93
2.94 "An XML-RPC structure member element."
2.95
2.96 - def _value(self):
2.97 + def _valueElement(self):
2.98 return (self.xpath("./value") or [None])[0]
2.99
2.100 def _nameElement(self):
2.101 @@ -312,9 +330,9 @@
2.102 self.add_or_replace_element(e)
2.103 return e
2.104
2.105 - value = property(_value)
2.106 nameElement = property(_nameElement)
2.107 memberName = property(_memberName, _setMemberName)
2.108 + valueElement = property(_valueElement)
2.109 contents = property(_contents)
2.110
2.111 class XMLRPCStringElement(XMLRPCNode):