changeset 55253:d33879ad154a

(xml-debug-print-internal): Don't add newline and indentation to text nodes and write empty elements as empty tags instead of opening and closing tags. (xml-debug-print): Take optional indent-string argument. (xml-print): Alias for xml-debug-print.
author Alex Schroeder <alex@gnu.org>
date Fri, 30 Apr 2004 20:00:19 +0000
parents fd5403ebeab1
children da40197b136d
files lisp/xml.el
diffstat 1 files changed, 25 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/xml.el	Fri Apr 30 18:55:13 2004 +0000
+++ b/lisp/xml.el	Fri Apr 30 20:00:19 2004 +0000
@@ -622,9 +622,15 @@
 ;;**
 ;;*******************************************************************
 
-(defun xml-debug-print (xml)
+(defun xml-debug-print (xml &optional indent-string)
+  "Outputs the XML in the current buffer.
+XML can be a tree or a list of nodes.
+The first line is indented with the optional INDENT-STRING."
+  (setq indent-string (or indent-string ""))
   (dolist (node xml)
-    (xml-debug-print-internal node "")))
+    (xml-debug-print-internal node indent-string)))
+
+(defalias 'xml-print 'xml-debug-print)
 
 (defun xml-debug-print-internal (xml indent-string)
   "Outputs the XML tree in the current buffer.
@@ -639,22 +645,26 @@
       (insert ?\  (symbol-name (caar attlist)) "=\"" (cdar attlist) ?\")
       (setq attlist (cdr attlist)))
 
-    (insert ?>)
-
     (setq tree (xml-node-children tree))
 
-    ;;  output the children
-    (dolist (node tree)
-      (cond
-       ((listp node)
-	(insert ?\n)
-	(xml-debug-print-internal node (concat indent-string "  ")))
-       ((stringp node) (insert node))
-       (t
-	(error "Invalid XML tree"))))
+    (if (null tree)
+	(insert ?/ ?>)
+      (insert ?>)
 
-    (insert ?\n indent-string
-	    ?< ?/ (symbol-name (xml-node-name xml)) ?>)))
+      ;;  output the children
+      (dolist (node tree)
+	(cond
+	 ((listp node)
+	  (insert ?\n)
+	  (xml-debug-print-internal node (concat indent-string "  ")))
+	 ((stringp node) (insert node))
+	 (t
+	  (error "Invalid XML tree"))))
+
+      (when (not (and (null (cdr tree))
+		      (stringp (car tree))))
+	(insert ?\n indent-string))
+      (insert ?< ?/ (symbol-name (xml-node-name xml)) ?>))))
 
 (provide 'xml)