热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

问题未解决再开一贴:调用microsoft.xmldom生成xml文档,生成的文档如何实现换行(明天就结账)

调用microsoft.xmldom生成xml文档生成的文档如何实现换行如:文档<A><b>B<b><A>想
调用microsoft.xmldom生成xml文档
  生成的文档如何实现换行
  如:
  文档  B  
  想达到
    
  B  
  
  
  
  (当然最好在第二行前能加空格或tab等)
  谢谢

不管问题是否解决明天一定结账(要是问题没解决,U P者有分)

谢谢

原贴子http://www.csdn.net/expert/topic/555/555491.xml

27 个解决方案

#1


原贴子部分内容:
...............
...............
 回复人: TXZY(木下藤吉郎) (  ) 信誉:100  2002-3-5  11:21:42  得分:0  
    我也不知道怎么解决。给你一份M$  的XML  SDK  4.0的例句,你可以参考一下。
  Dim  rdr  As  New  MSXML2.SAXXMLReader40
  Dim  cnth  As  IVBSAXContentHandler
  Dim  wrt  As  New  MXXMLWriter40
  wrt.indent  =  True            '好像要设置这个。
  wrt.standalone  =  True
  Set  cnth  =  wrt
  Set  rdr.contentHandler  =  cnth
  rdr.parseURL  ("books.xml")
  MsgBox  wrt.output
Top 
 回复人: rjcludy() (  ) 信誉:100  2002-3-5  11:25:46  得分:0  
 
  先谢谢你  TXZY(木下藤吉郎)  
  我是用pb来调用microsoft.xmldom控件
  我试试看能不能在pb中使用 
 回复人: rjcludy() (  ) 信誉:100  2002-3-5  11:28:34  得分:0  
  那个是调用sax接口
  我想在xmldom中实现,有没有办法?
  谢谢 
回复人: mmkk() (  ) 信誉:100  2002-3-5  12:33:02  得分:0  
  这个以前没有认真考虑过...关注一下 
回复人: TXZY(木下藤吉郎) (  ) 信誉:100  2002-3-5  13:48:40  得分:0  
  vb程序行!
          Dim  xmlDoc  As  New  MSXML2.DOMDocument40
          xmlDoc.async  =  False
          xmlDoc.preserveWhiteSpace  =  True  '禁止空格允许
          xmlDoc.Load  ("c:\11.xml")
          MsgBox  xmlDoc.xml
          xmlDoc.save  "c:\t1.xml"
          
          xmlDoc.async  =  False
          xmlDoc.preserveWhiteSpace  =  False  '禁止空格不允许
          xmlDoc.Load  ("c:\11.xml")
          MsgBox  xmlDoc.xml
          xmlDoc.save  "c:\t2.xml"
  程序的执行的结果,t1.xml没有任何缩进!t2.xml有一定缩进!但也不完美!
  当11.xml为
  <  ?xml  version="1.0"  encoding='GB2312'?>  
  <  hello>    <  to>  Hello,the  world!<  /to>    <  yes>  No<  /yes>    <  ok>  No  Ok<  /ok>    <  /hello>  
  各元素之间有空格!生成t2.xml就很完美。
  各元素之间没有空格!生成t2.xml就和t1.xml差不多! 
  回复人: rjcludy() (  ) 信誉:100  2002-3-5  14:11:30  得分:0  
  再次谢谢你  TXZY(木下藤吉郎)
  xmlDoc.preserveWhiteSpace    =    True是为了解析时不要突略空格
  所以要实现换行等,必须原来就有一个有换行的文档
  而我要的效果是,完全新生成一份xml文档,而不是载入文档修改再保存
  thx  again 
...................
.....................

#2


再加100分

谢谢大家

#3


呵呵,可能(无为)能够帮助你!

#4


呵呵,可能(无为)可以帮助你解决这个问题!

#5


要回去了,再提一下
谢谢大家

#6


回去之前又发现个问题:
     字符串 abcd(年度为:1998)
     生成xml文档时正确
     把生成的xml文档重新载入,取值只得到abcd 
     这是为什么???
     我已经加了
     是调用microsoft.xmldom对象

#7


you need to use a different writer like what TXZY(木下藤吉郎) suggested, or use a XSLT identity tranformation to format your XML with

#8


没有看懂你的新问题!

字符串是“abcd(年度为:1998)”一起吧!

#9


你的字符串是否有空格呢?
xmlDoc.preserveWhiteSpace = True  '禁止空格允许

#10


先谢谢大家

TO TXZY(木下藤吉郎)
字符串是“abcd(年度为:1998)”是在一起的
调试发现有时取到的是“abcdf” 有时取到的是“abcd"” 
另外测试也出现问题

XML文件内容如下:

演示数据演示数据演示数据演示数据演示数据演示数据演示数据演示数据演示数据演示数据演示数据演示数据演示数据第986条演示

数据演示数据演示数据演示数据演示数据演示数据演示数据演示数据演示数据

通过DOM解析后取的值
第一个只取了前24个字(原来48个)
第二个字取了"演示数据第986条演示数据演示数据演示数据演示数"

难道微软的DOM这么烂

(前天才开始学xml,因为项目比较紧,请大家多多帮忙,谢谢)

#11


你用的是PB,是否设置了取值后放入变量的宽度呢?

如果用vb,我还没有遇到过这种情况了!

#12


宽度肯定没有问题
是不是中的encoding设置有问题?
还是要设置dom对象的那个属性?
thx

#13


没有问题,我做了一个简单程序,直接取你的数据,取出来都是正常的。48个,没有减少的情况。我也没有设置什么其他的属性,我估计和你pb有关系,你不会使用了left(xxx,48),在pb里面会不会认为是leftB(xxx,48)呢?

#14


它是不是认为24个汉字,就占了48个英文字符空间。
vb里面有leftB()函数哈。
我估计和英文字符和汉字字符在PB里的设置有关!

#15


我用了一个笨的方法实现了保留空格和缩进的方法

#16


谢谢你TXZY(木下藤吉郎)

pb对双字节的汉字是会处理出错(pb8不会),当我只是做简单的附值,
只是把节点的text附给pb的一个变量,这个可以肯定不会出错。
我猜内嵌的对象dom解析时,填充节点树枝时,对一些字符比较敏感,
也可能对双字节的汉字处理有问题。

幸好是生成xml文件时不会错,要不就完了

现在我对生成的xml文件换行和空格的处理是:
生成xml文件后,用个函数来打开文件添加必要的换行和空格,
效果不错
不知道兄弟您是如何处理的

#17


不好意思,好像还有问题!没有空格还是不行!

笨方法如下:
首先xmlDoc也是一个DOMDocument对象,它的数据内容又你的程序添加进去!

然后在做一个函数或过程,调用另外一个DOMDocument对象,例如下面的SaveSpaceXml。进行转存!
转存VB程序
    Dim SaveSpaceXml As New MSXML2.DOMDocument40
    SaveSpaceXml.preserveWhiteSpace = False

    SaveSpaceXml.loadXML xmlDoc.xml  
    '就是这里,用SavaSpaceXml对象的loadXML方法,装载xmlDoc对象的xml属性。

    SaveSpaceXml.save "c:\t1.xml"

#18


我又改进了我的转存 VB 程序,如下:
    Dim SaveSpaceXml As New MSXML2.DOMDocument40
    SaveSpaceXml.preserveWhiteSpace = False

    SaveSpaceXml.loadXML Replace(xmlDoc.xml, ">", "> ")

    SaveSpaceXml.save ("c:\t1.xml")

注意我调用了 vb 的一个函数,自动插入空格。然后就ok了!



Vb 里的 Replace函数介绍!
返回字符串,其中指定数目的某子字符串被替换为另一个子字符串。

Replace(expression, find, replacewith[, compare[, count[, start]]])

Replace 函数的语法有以下参数:
expression  必选。 字符串表达式 包含要替代的子字符串。  
find        必选。被搜索的子字符串。 
replacewith 必选。用于替换的子字符串。 
start       可选。expression 中开始搜索子字符串的位置。如果省略,默认值为 1。在和count 关联时必须用  
count       可选。执行子字符串替换的数目。如果省略,默认值为 -1,表示进行所有可能的替换。在和 start 关联时必须用。 
compare     可选。指示在计算子字符串时使用的比较类型的数值。有关数值,请参阅“设置”部分。如果省略,缺省值为 0 ,这意味着必须进行二进制比较。 

设置
compare 参数可以有以下值:
vbBinaryCompare  0   执行二进制比较。 
vbTextCompare    1   执行文本比较。

#19


兄弟我先谢了
等会儿再过来试
谢谢

#20


用其他手段。我实验过了,绝对可以。



<%
 set xmlobj=server.createobject("Microsoft.xmldom")
 xmlobj.load(server.MapPath(".")&"\test.xml")
 theStr=xmlobj.xml
 theAry=split(theStr,"><")
 theStr=join(theAry,"> "&chr(13)&"<")
 xmlobj.loadxml(theStr)
 xmlobj.save(server.MapPath(".")&"\test1.xml")
 set xmlobj=nothing
%>



呵呵
这个分可以给我吗?

#21


对了。在装载前后最好都加上一个错误判断,以防止出错。
:)

#22


呵呵!

#23


谢谢大家,空格的问题搞定了

不过那个解析后的不到原来的值,不知道有没有办法?

thx very much

#24


先买单我再开一贴子

http://www.csdn.net/expert/topic/558/558229.xml

请大家继续关注

谢谢大家

#25


用text属性就可以嘛?

我认为你应该从PB那边去考虑了,因为Dom在VB里面取值是正常的!
而PB我就不太熟悉了,估计没有办法帮助你!

你试一下中文编码
encoding="gb2312"
改为
encoding="EUC-CN"
看看!

#26


我就是用text属性

我打开xml文档时
domxml.load(file)后
domxml.xml是正确的
再取它的子节点时发现子节点的xml属性就变了
text也不正确

我是直接把xml和text属性打印出来的,跟pb应该没有大关系了

#27



得自己加标志表示换行,自己在把标志换成换行;

xml本身只存放数据,不会有格式。它的目标就是数据和操作、格式分离。

推荐阅读
  • 图像因存在错误而无法显示 ... [详细]
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • 本文介绍了在使用Laravel和sqlsrv连接到SQL Server 2016时,如何在插入查询中使用输出子句,并返回所需的值。同时讨论了使用CreatedOn字段返回最近创建的行的解决方法以及使用Eloquent模型创建后,值正确插入数据库但没有返回uniqueidentifier字段的问题。最后给出了一个示例代码。 ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文讨论了如何使用Web.Config进行自定义配置节的配置转换。作者提到,他将msbuild设置为详细模式,但转换却忽略了带有替换转换的自定义部分的存在。 ... [详细]
  • 纠正网上的错误:自定义一个类叫java.lang.System/String的方法
    本文纠正了网上关于自定义一个类叫java.lang.System/String的错误答案,并详细解释了为什么这种方法是错误的。作者指出,虽然双亲委托机制确实可以阻止自定义的System类被加载,但通过自定义一个特殊的类加载器,可以绕过双亲委托机制,达到自定义System类的目的。作者呼吁读者对网上的内容持怀疑态度,并带着问题来阅读文章。 ... [详细]
  • 本文介绍了Oracle存储过程的基本语法和写法示例,同时还介绍了已命名的系统异常的产生原因。 ... [详细]
author-avatar
Vivian329306
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有