summaryrefslogtreecommitdiff
path: root/lisp/xml.el
diff options
context:
space:
mode:
authorMark A. Hershberger <mah@everybody.org>2007-12-18 03:22:05 +0000
committerMark A. Hershberger <mah@everybody.org>2007-12-18 03:22:05 +0000
commit7731c9f4012b43ee393417ae8cd541c5d89b172b (patch)
tree5de40a7fb1eaad3ccc7f4f0ff3fc241ca4cec37d /lisp/xml.el
parent4f9d920a2d764ffe93e7ec1a75c70cb1d46810f0 (diff)
downloademacs-7731c9f4012b43ee393417ae8cd541c5d89b172b.tar.gz
fix up xml-debug-print
Diffstat (limited to 'lisp/xml.el')
-rw-r--r--lisp/xml.el17
1 files changed, 15 insertions, 2 deletions
diff --git a/lisp/xml.el b/lisp/xml.el
index 6ea6dd4f56c..20c582f06e8 100644
--- a/lisp/xml.el
+++ b/lisp/xml.el
@@ -844,6 +844,17 @@ The first line is indented with the optional INDENT-STRING."
(defalias 'xml-print 'xml-debug-print)
+(defun xml-escape-string (string)
+ (mapconcat (lambda (byte)
+ (let ((char (char-to-string byte)))
+ (if (rassoc char xml-entity-alist)
+ (concat "&" (car (rassoc char xml-entity-alist)) ";")
+ char)))
+ (if (multibyte-string-p string)
+ (encode-coding-string string 'utf-8)
+ string)
+ ""))
+
(defun xml-debug-print-internal (xml indent-string)
"Outputs the XML tree in the current buffer.
The first line is indented with INDENT-STRING."
@@ -854,7 +865,8 @@ The first line is indented with INDENT-STRING."
;; output the attribute list
(setq attlist (xml-node-attributes tree))
(while attlist
- (insert ?\ (symbol-name (caar attlist)) "=\"" (cdar attlist) ?\")
+ (insert ?\ (symbol-name (caar attlist)) "=\""
+ (xml-escape-string (cdar attlist)) ?\")
(setq attlist (cdr attlist)))
(setq tree (xml-node-children tree))
@@ -869,7 +881,8 @@ The first line is indented with INDENT-STRING."
((listp node)
(insert ?\n)
(xml-debug-print-internal node (concat indent-string " ")))
- ((stringp node) (insert node))
+ ((stringp node)
+ (insert (xml-escape-string node)))
(t
(error "Invalid XML tree"))))