1.1 --- a/libxml2dom/xmlrpc.py Wed Sep 10 00:35:11 2008 +0200
1.2 +++ b/libxml2dom/xmlrpc.py Fri Sep 12 01:03:56 2008 +0200
1.3 @@ -41,7 +41,7 @@
1.4 "Convenience modifications to nodes specific to libxml2dom.xmlrpc."
1.5
1.6 def add_or_replace_element(self, new_element):
1.7 - elements = self.xpath("*")
1.8 + elements = self.xpath(new_element.localName)
1.9 if elements:
1.10 self.replaceChild(new_element, elements[0])
1.11 else:
1.12 @@ -90,6 +90,9 @@
1.13 def _fault(self):
1.14 return (self.xpath("./fault") or [None])[0]
1.15
1.16 + def _params(self):
1.17 + return (self.xpath("./params") or [None])[0]
1.18 +
1.19 def _methodNameElement(self):
1.20 return (self.xpath("./methodName") or [None])[0]
1.21
1.22 @@ -109,6 +112,9 @@
1.23 def _parameterValues(self):
1.24 return [value.container.contents for value in self.xpath("./params/param/value")]
1.25
1.26 + def _parameters(self):
1.27 + return self.xpath("./params/param")
1.28 +
1.29 # Node construction methods.
1.30
1.31 def createMethodName(self, insert=0):
1.32 @@ -130,14 +136,19 @@
1.33 return e
1.34
1.35 fault = property(_fault)
1.36 + params = property(_params)
1.37 methodNameElement = property(_methodNameElement)
1.38 methodName = property(_methodName, _setMethodName)
1.39 parameterValues = property(_parameterValues)
1.40 + parameters = property(_parameters)
1.41
1.42 class XMLRPCParametersElement(XMLRPCNode):
1.43
1.44 "An XML-RPC parameters/params element."
1.45
1.46 + def _parameters(self):
1.47 + return self.xpath("./param")
1.48 +
1.49 # Node construction methods.
1.50
1.51 def createParameter(self, insert=0):
1.52 @@ -146,10 +157,15 @@
1.53 self.appendChild(e)
1.54 return e
1.55
1.56 + parameters = property(_parameters)
1.57 +
1.58 class XMLRPCParameterElement(XMLRPCNode):
1.59
1.60 "An XML-RPC parameter/param element."
1.61
1.62 + def _valueElement(self):
1.63 + return (self.xpath("./value") or [None])[0]
1.64 +
1.65 # Node construction methods.
1.66
1.67 def createValue(self, typename=None, insert=0):
1.68 @@ -161,11 +177,13 @@
1.69 self.add_or_replace_element(value)
1.70 return value
1.71
1.72 + valueElement = property(_valueElement)
1.73 +
1.74 class XMLRPCArrayElement(XMLRPCNode):
1.75
1.76 "An XML-RPC array element."
1.77
1.78 - def _data(self):
1.79 + def _dataElement(self):
1.80 return (self.xpath("./data") or [None])[0]
1.81
1.82 def _contents(self):
1.83 @@ -199,7 +217,7 @@
1.84 self.add_or_replace_element(e)
1.85 return e
1.86
1.87 - data = property(_data)
1.88 + dataElement = property(_dataElement)
1.89 contents = property(_contents)
1.90
1.91 class XMLRPCStructElement(XMLRPCNode):
1.92 @@ -266,7 +284,7 @@
1.93
1.94 "An XML-RPC structure member element."
1.95
1.96 - def _value(self):
1.97 + def _valueElement(self):
1.98 return (self.xpath("./value") or [None])[0]
1.99
1.100 def _nameElement(self):
1.101 @@ -312,9 +330,9 @@
1.102 self.add_or_replace_element(e)
1.103 return e
1.104
1.105 - value = property(_value)
1.106 nameElement = property(_nameElement)
1.107 memberName = property(_memberName, _setMemberName)
1.108 + valueElement = property(_valueElement)
1.109 contents = property(_contents)
1.110
1.111 class XMLRPCStringElement(XMLRPCNode):