summaryrefslogtreecommitdiff
path: root/qpid/python/mllib/__init__.py
diff options
context:
space:
mode:
authorRafael H. Schloming <rhs@apache.org>2007-07-23 14:36:05 +0000
committerRafael H. Schloming <rhs@apache.org>2007-07-23 14:36:05 +0000
commit9174ccc18fa66e521752e74991d4d9e4ccdf8ab3 (patch)
tree8a768c7846e4b8c44805a1a23c8ff8c78c60a502 /qpid/python/mllib/__init__.py
parent8091165787a3e106fcb1edb2f3effcca2f29a9bc (diff)
downloadqpid-python-9174ccc18fa66e521752e74991d4d9e4ccdf8ab3.tar.gz
Added a better XML library.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@558742 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/python/mllib/__init__.py')
-rw-r--r--qpid/python/mllib/__init__.py60
1 files changed, 60 insertions, 0 deletions
diff --git a/qpid/python/mllib/__init__.py b/qpid/python/mllib/__init__.py
new file mode 100644
index 0000000000..44b78126fb
--- /dev/null
+++ b/qpid/python/mllib/__init__.py
@@ -0,0 +1,60 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+"""
+This module provides document parsing and transformation utilities for
+both SGML and XML.
+"""
+
+import dom, transforms, parsers
+import xml.sax, types
+from cStringIO import StringIO
+
+def transform(node, *args):
+ result = node
+ for t in args:
+ if isinstance(t, types.ClassType):
+ t = t()
+ result = result.dispatch(t)
+ return result
+
+def sgml_parse(source):
+ if isinstance(source, basestring):
+ source = StringIO(source)
+ fname = "<string>"
+ elif hasattr(source, "name"):
+ fname = source.name
+ p = parsers.SGMLParser()
+ num = 1
+ for line in source:
+ p.feed(line)
+ p.parser.line(fname, num, None)
+ num += 1
+ p.close()
+ return p.parser.tree
+
+def xml_parse(source):
+ p = parsers.XMLParser()
+ xml.sax.parse(source, p)
+ return p.parser.tree
+
+def sexp(node):
+ s = transforms.Sexp()
+ node.dispatch(s)
+ return s.out