找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1580|回复: 3

[文件] ( XD::XML:GetDocument)获取XML DOM

[复制链接]

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-2-3 09:46:52 | 显示全部楼层 |阅读模式
函数发布
函数名称: XD::XML:GetDocument
调用格式: ( XD::XML:GetDocument xmlfile sysvar)
参数说明: ;;参数: file --- xml 文件
;; XMLDoc --- symbol
返回值: vla-object
函数简介: 获取 XML DOM
函数来源: 原创
函数作者: st788796
适用版本: 不限 
最后更新时间: 2014-02-07
备注: 第三版
file 为 nil 或 不存在时创建空 DOM
演示图片: -

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 st788796 于 2014-2-7 08:46 编辑

  1. ;;参数: file   --- xml 文件
  2. ;;      XMLDoc --- XMLDocument Object
  3. (defun XD::XML:GetDocument (file XMLDoc /)
  4.   (if (vlax-property-available-p
  5.         (if (= (type XMLDoc) 'SYM)
  6.           (eval XMLDoc)
  7.           XMLDoc
  8.         )
  9.         'nodeType
  10.       )
  11.     (eval XMLDoc)
  12.     (if        (set XMLDoc (vlax-create-object "MSXML2.DOMDocument.3.0"))
  13.       (progn
  14.         (if (and file (findfile file))
  15.           (progn
  16.             (vlax-put-property (eval XMLDoc) "async" :vlax-false)
  17.             (vlax-invoke (eval XMLDoc) "Load" file)
  18.           )
  19.         )
  20.         (eval xmldoc)
  21.       )
  22.     )   
  23.   )
  24. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-2-6 00:09:40 | 显示全部楼层
本帖最后由 st788796 于 2014-2-6 00:12 编辑

http://www.w3school.com.cn/xmldom/index.asp




论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-2-6 10:49:59 | 显示全部楼层
本帖最后由 st788796 于 2014-2-6 10:53 编辑

http://www.webshu.net/jiaocheng/programme/XML/200804/6850.html
我以前在介绍XML和让别人试着使用DOM时,不只一个人问过我用DOM是否能用来凭空直接生成一个XML文件。  
  当然,这是当然可以的了,其次是怎么写程序呢。
  那我就这个问题,专门在这篇文章中用VB和MSXML的COM接口的DOM实现的一个例子来讲一下:
  首先我要说明的是,我用的MSXML的版本是IE5带的,版本号是5.0.2919.3800,微软的早期版本的接口和新的有些不一样,所以自己编程时,应该看一下她的接口和说明。
  如果你对vb和COM不太熟悉,看下面的就可能比较费劲了,但VB比起其他的语言实现,应该是比较简单清楚的了。
  首先声明下面要用的几个对象的变量:
Dim tempdoc As MSXML.DOMDocument
Dim tempnode As MSXML.IXMLDOMNode
Dim tempelement As MSXML.IXMLDOMElement
Dim tempattribute As MSXML.IXMLDOMElement
Dim root As MSXML.IXMLDOMElement
  生成一个XML DOMDocument对象
Set tempdoc = New MSXML.DOMDocument
  生成根节点并把它设置为文件的根
Set root = tempdoc.createElement("MyRoot")
Set tempdoc.documentElement = root
  生成孩子节点添加到根节点上去,并且为这个节点设置一个属性
Set tempnode = tempdoc.createNode(MSXML.NODE_ELEMENT, "MyNode", "")
tempnode.Text = "MyNodeValue"
root.appendChild tempnode
  取得元素节点的接口,添加属性
Set tempelement = tempnode
tempelement.setAttribute "MyAttribute", "MyAttributeValue"
  写xml文件
Open "MyXMLFile.xml" for output as #1
Print #1, root.XML
Close #1
  下面就是上面程序生成的XML文件内容:
   MyNodeValue
 
  在MSXML中也有非DOM的接口可以用,这就要看大家自己的用法了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-2-6 11:26:00 | 显示全部楼层
测试
  1. ;;生成一个新 xml 文档添加根节点并保存
  2. (defun XD::XML:NewXMLDoc
  3.        (file XMLDoc rootTagName lst / documentElemenut)
  4.   (XD::XML:GetDocument file XMLDoc)
  5.   (setq        documentElemenut
  6.          (vlax-invoke-method
  7.            XMLDoc
  8.            'createElement
  9.            rootTagName
  10.          )
  11.   )
  12.   (vlax-put XMLDoc 'documentElement documentElemenut)
  13.   (XD::XML:SaveAs XMLDoc file)
  14. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-24 18:31 , Processed in 0.248431 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表