格式化XML文件为缩进样式
来源:互联网 发布:mac os什么时候发布 编辑:程序博客网 时间:2024/05/22 15:56
虽然Powerbuilder从9.0开始提供对XML文件的操作,但本人一直用8.0作为主要的开发工具,所以操作XML时只能通过OLE调用DOM控件。使用Microsoft.XMLDOM直接导出(SaveAs) 的XML文件没有缩进,用写字板打开时全部挤在第一行,不好编辑;关键在于后续的开发中由于超长的“一行”数据,导致了错误。后来,在互联网上振翅的蝴蝶的blog上看到了格式化缩进XML文档,有现成的代码格式化XML文档。稍作改动,美化了XML,如下:
//==============================================================================
// 函数: uvo_ysjk::uf_format_xml()
//------------------------------------------------------------------------------
// 描述: 格式化XML文件
//------------------------------------------------------------------------------
// 参数:
// value string as_file XML文件名
//------------------------------------------------------------------------------
// 返回值: 成功返回'',失败返回非空字符串。
//------------------------------------------------------------------------------
// 作者: blackeys 日期: 2006年12月04日
//------------------------------------------------------------------------------
// 修改历史:
// 1、2006年12月04日 创建
//------------------------------------------------------------------------------
// ××××开发组
//==============================================================================
String ls_err,ls_xmlfile
Int i,li_rtn
ls_xmlfile = as_file
oleobject xmldoc,rdr,wrt
xmldoc = CREATE oleobject
li_rtn = xmldoc.ConnectToObject('microsoft.xmldom')
IF li_rtn <> 0 THEN li_rtn = xmldoc.ConnectToNewObject("Microsoft.XMLDOM")
IF li_rtn <> 0 THEN
DESTROY xmldoc
RETURN '调用microsoft.xmldom失败!'
END IF
xmldoc.async = FALSE
xmldoc.load(ls_xmlfile)
IF xmldoc.parseError.errorCode <> 0 THEN
DESTROY xmldoc
RETURN '解析错误'+ ls_err
END IF
rdr = CREATE oleobject
li_rtn = rdr.ConnectToObject('MSXML2.SAXXMLReader')
IF li_rtn <> 0 THEN li_rtn = rdr.ConnectToNewObject("MSXML2.SAXXMLReader")
IF li_rtn <> 0 THEN
DESTROY xmldoc
DESTROY xmldoc
RETURN '调用MSXML2.SAXXMLReader失败!'
END IF
wrt = CREATE oleobject
li_rtn = wrt.ConnectToObject('MSXML2.MXXMLWriter')
IF li_rtn <> 0 THEN li_rtn = wrt.ConnectToNewObject("MSXML2.MXXMLWriter")
IF li_rtn <> 0 THEN
DESTROY xmldoc
DESTROY rdr
DESTROY wrt
RETURN '调用MSXML2.MXXMLWriter失败!'
END IF
String xmlHeader,xmlBody
xmlHeader=xmldoc.childNodes[0].xml; //在开始解析前保存xml头
wrt.indent = true;
rdr.contentHandler = wrt;
rdr.parse(xmldoc);
xmldoc.loadXML(wrt.output);
long xmlChildLength
xmlChildLength=xmldoc.childNodes.length;
xmlBody='';
for i = 1 to xmlChildLength - 1
xmlBody = xmlBody + xmldoc.childNodes[i].xml;
if mod(i,100) = 0 then //DOM需要占用大量内存,PB调用时更为如此,所以循环做垃圾回收
GarbageCollect ( )
end if
next
xmldoc.loadXML(xmlHeader + xmlBody);
xmldoc.save(ls_xmlfile);
DESTROY xmldoc
destroy rdr
destroy wrt
RETURN ''
- 格式化XML文件为缩进样式
- 格式化缩进XML文档
- analyzeXml格式化xml文件缩进格式_EnxXml还原xml缩进格式
- 使用XmlBeans输出格式化xml文件,带有换行缩进
- 为xml文件应用样式
- XML格式化(缩进)输出的方法
- Flex xml格式化以及缩进量
- Flex xml格式化以及缩进量
- 格式化XML:输出有缩进效果的XML字符串
- 用SAXXMLReader将XML文件保存为缩进格式,方便阅读
- 利用xslt对xml进行缩进格式化处理
- 利用xslt对xml进行缩进格式化处理
- 利用xslt对xml进行缩进格式化处理
- 利用xslt对xml进行缩进格式化处理
- 利用xslt对xml进行缩进格式化处理
- 利用xslt对xml进行缩进格式化处理
- 利用xslt对xml进行缩进格式化处理
- 利用 XSLT 对 XML 进行缩进格式化处理(转)
- 自作孽不可活
- 简单的tdi hook
- CONFIG.SYS文件详解
- Smartdrv在安装操作系统中的作用
- 项目组长的任务
- 格式化XML文件为缩进样式
- 输出文本
- vi使用手册(zt)
- asp.net Ajax参考资料
- System.Security.Cryptography实战(图)
- 常用消息
- 用户权限影响瑞星安装
- DotNet.蜡笔(534818011)
- uClinux 内核编译常见错误及解决方法(zt)