XML格式化(缩进)输出的方法

4 篇文章 0 订阅

1. 网上找了好些都是孟子E章的XSLT方法,地址:http://blog.csdn.net/net_lover/archive/2004/07/27/53601.aspx

2. 本人也不相信没有其他方便的方法进行转换,下面这个方法倒是可以用用,比较简单。不过这个接口说不定在比较低版本的MSXML(Microsoft® XML Core Services)库里面没有呢!这种方法使用的是SAX,一直使用MSXML都是DOM方式,孟子E章介绍的也是DOM。XML直接从SAX方式生成到DOM方式的范例http://msdn.microsoft.com/library/en-us/xmlsdk/html/6139a6fe-7d4c-449d-9e36-60b68be1de71.asp?frame=true

从这个地址:http://msdn.microsoft.com/library/en-us/xmlsdk/html/9e353ac7-ab8b-44aa-9fbc-12ca715ab1e7.asp?frame=true可以看到MSXML版本发展的历史,看来是要MSXML3.0以上才有SAXXMLReader。地址:http://www.99inf.net/Article/netjc/xmlapp/2005-05-24/22932.html
<%
Dim rdr, wrt
set rdr = Server.CreateObject("MSXML2.SAXXMLReader.4.0")
set wrt = Server.CreateObject("MSXML2.MXXMLWriter.4.0")
wrt.indent = True
Set rdr.contentHandler = wrt
'--------------------------------------------
' 可以解析 xml文件、xmlDom对象、xml字符串
' rdr.parseURL ("books.xml");
' rdr.parse (xmlDoc);
' rdr.parse ("<article><author>无心(cuixiping)</author></article>");

'--------------------------------------------
rdr.parse "<article><author>无心(cuixiping)</author></article>"
response.write ("<xmp>")
' 和SAXXMLReader类似output输出也可以为DOMDocument 地址:http://msdn.microsoft.com/library/en-us/xmlsdk/html/5ff0aeb7-02cb-4fe4-ad78-0c48208e0282.asp?frame=true
response.write (wrt.output)
response.write ("</xmp>")
%>
C++ Builder中的使用方法,感觉不是百发百中,有一些会莫名其妙无法输出,另外一个致命的错误是,默认会给XML加上一个处理信息encoding="UTF-16" standalone="yes",而且是强加的,就算载入的时候是别的encoding,也会变成UTF-16。查找相关资料可能因为是COM里面处理字符串是BSTR的缘故。
    //TCOMISAXXMLReader   i_xmlreader;
    //TCOMIMXWriter       i_xmlwriter;
    //Msxml2_tlb::IXMLDOMDocumentPtr doc;
    if ((IMXWriter *)i_xmlwriter == NULL)
    {
        i_xmlwriter   = CoMXXMLWriter::Create();
        i_xmlwriter->indent = VARIANT_TRUE;
    }
    if ((ISAXXMLReader *)i_xmlreader == NULL)
    {
        i_xmlreader   = CoSAXXMLReader::Create();
        i_xmlreader->putContentHandler((IMXWriter *)i_xmlwriter);
    }
    i_xmlwriter->set_output((IDispatch *)doc);
    i_xmlreader->parse(doc->get_xml());
    //i_xmlreader->parse((IDispatch *)doc);

3.  先保存成一个文件,然后利用CFile将文件内容按Tag换行.然后顺序调用msxml的load和save重新打开和保存该文件。这时你再用记事本打开看看! 这种方法也算一种方法,比较笨的方法。
地址:http://www.5iv.net/067/how162267.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值