Mercurial > emacs
diff lisp/xml.el @ 87317:e8a485c87523
fix up xml-debug-print
author | Mark A. Hershberger <mah@everybody.org> |
---|---|
date | Tue, 18 Dec 2007 03:22:05 +0000 |
parents | 9355f9b7bbff |
children | 3b14ea2b1d8a |
line wrap: on
line diff
--- a/lisp/xml.el Tue Dec 18 02:32:40 2007 +0000 +++ b/lisp/xml.el Tue Dec 18 03:22:05 2007 +0000 @@ -844,6 +844,17 @@ (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 @@ ;; 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 @@ ((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"))))