返回列表 回复 发帖

[注意]XML缩进输出,最简单的方法!

作者:sunrise_chen
★XML缩进输出,最简单的方法!
By: 无心(cuixiping)  2005-1-28
时不时的有人问xml的缩进。
网上见的多的是孟子E章BLOG上的XSLT方法(他的blog宣传不错,名气大嘛)
    网址: http://blog.csdn.net/net_lover/archive/2004/07/27/53601.aspx
    文章: 利用xslt对xml进行缩进格式化处理
该方法可以解决问题,但是,不仅代码繁琐,而且还需要一个xsl文件。
我觉得是过于麻烦了。
其实一切可以更简单的、更方便的!
问题来源于 MSXML DOM 调用save方法后,有改动的节点将都在一行,
没有回车换行和缩进,阅读很不方便。
你想,微软不会不知道这个问题存在吧,
微软毕竟是微软,他总不会没有替你想个解决办法吧!
都没仔细看微软的文档,就来瞎折腾,把可以简单的搞复杂了!
建议大家如果用微软的 msxml ,就看看他的文档吧。
我现在贴一下我的代码:
★ASP中:
  1. <%
  2. Dim rdr, wrt
  3. set rdr = Server.CreateObject("MSXML2.SAXXMLReader.4.0")
  4. set wrt = Server.CreateObject("MSXML2.MXXMLWriter.4.0")
  5. wrt.indent = True
  6. Set rdr.contentHandler = wrt
  7. ';--------------------------------------------
  8. '; 可以解析 xml文件、xmlDom对象、xml字符串
  9. '; rdr.parseURL ("books.xml");
  10. '; rdr.parse (xmlDoc);
  11. '; rdr.parse ("<article><author>无心(cuixiping)</author></article>");
  12. ';--------------------------------------------
  13. rdr.parse "<article><author>无心(cuixiping)</author></article>"
  14. response.write ("<xmp>")
  15. response.write (wrt.output)
  16. response.write ("</xmp>")
  17. %>
  18. ★JavaScript中:
  19. <script language="JavaScript">
  20. var rdr = new ActiveXObject("MSXML2.SAXXMLReader.4.0");
  21. var wrt = new ActiveXObject("MSXML2.MXXMLWriter.4.0");
  22. wrt.indent = true;
  23. rdr.contentHandler = wrt;
  24. /*
  25. * 可以解析 xml文件、xmlDom对象、xml字符串
  26. * rdr.parseURL ("books.xml");
  27. * rdr.parse (xmlDoc);
  28. * rdr.parse ("<article><author>无心(cuixiping)</author></article>");
  29. */
  30. rdr.parse("<article><author>无心(cuixiping)</author></article>");
  31. alert(wrt.output);
  32. </script>
复制代码

                     我是一个呼吸着现在的空气而生活在过去的人
               这样的注定孤独,孤独的身处闹市却犹如置身于荒漠
                                     我已习惯了孤独,爱上孤独
                                 他让我看清了自我,还原了自我
                             让我再静静的沉思中得到快乐和满足
                                   再孤独的世界里我一遍又一遍
                                   不厌其烦的改写着自己的过去
                                             延伸到现在与未来
                                       然而那只是泡沫般的美梦
                                 产生的时刻又伴随着破灭的到来
                         在灰飞烟灭的瞬间我看到的是过程的美丽
                                      而不是结果的悲哀。。。

[注意]XML缩进输出,最简单的方法!

利用xslt对xml进行缩进格式化处理
下面就是简单的例子,这里提供2中方法:
test.htm
  1. <SCRIPT>
  2. //装载数据
  3. x = "<r><a name=';net_lover';>aaaaaaaaaaa</a>         <b>bbbbbbb</b><a>aaaaaaaaaaa</a><b>bbbbbbb</b></r>"
  4.   var source = new ActiveXObject("Msxml2.DOMDocument");
  5.   source.async = false;
  6.   source.loadXML(x)
  7.   alert(source.xml)
  8.   // 装载样式单
  9.   var stylesheet = new ActiveXObject("Msxml2.DOMDocument");
  10.   stylesheet.async = false;
  11.   stylesheet.resolveExternals = false;
  12.   stylesheet.load("style.xsl");
  13. alert(stylesheet.xml)
  14.   // 创建结果对象
  15.   var result = new ActiveXObject("Msxml2.DOMDocument");
  16.   result.async = false;
  17.   // 把解析结果放到结果对象中方法1
  18.   source.transformNodeToObject(stylesheet, result);
  19.   alert(result.xml)
  20.   
  21.    // 把解析结果放到结果对象中方法2
  22.   result2 = ""
  23.   result2 = source.transformNode(stylesheet);
  24.   source.loadXML(result2)
  25.   alert(source.xml)
  26. </SCRIPT>
  27. style.xsl
  28. <?xml version="1.0"?>
  29. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  30. <xsl:output method = "xml"  omit-xml-declaration = "yes" indent = "yes"/>
  31. <xsl:template match="/ | @* | node()">
  32.     <xsl:copy>
  33.       <xsl:apply-templates select="@* | node()"/>
  34.     </xsl:copy>
  35.   </xsl:template>
  36. </xsl:stylesheet>
复制代码

                     我是一个呼吸着现在的空气而生活在过去的人
               这样的注定孤独,孤独的身处闹市却犹如置身于荒漠
                                     我已习惯了孤独,爱上孤独
                                 他让我看清了自我,还原了自我
                             让我再静静的沉思中得到快乐和满足
                                   再孤独的世界里我一遍又一遍
                                   不厌其烦的改写着自己的过去
                                             延伸到现在与未来
                                       然而那只是泡沫般的美梦
                                 产生的时刻又伴随着破灭的到来
                         在灰飞烟灭的瞬间我看到的是过程的美丽
                                      而不是结果的悲哀。。。
返回列表