以文本方式查看主题 - 中文XML论坛 - 专业的XML技术讨论区 (http://bbs.xml.org.cn/index.asp) -- 『 XML基础 』 (http://bbs.xml.org.cn/list.asp?boardid=1) ---- 在ASP中操纵xml的问题 (http://bbs.xml.org.cn/dispbbs.asp?boardid=1&rootid=&id=6416) |
-- 作者:锋划雪月 -- 发布时间:4/3/2004 11:27:00 PM -- 在ASP中操纵xml的问题 呵呵,好几天没来了。我正在做以前提到的那个动态调查问卷程序,但现在有个问题,我发现自己的xml文档结构设计的不太合理,在ASP中操纵起来有点复杂。文档如下: <?xml version="1.0" encoding="gb2312"?> <detail> <test> <question> <questionid>1</questionid> <qtype>single</qtype> <qname>你比较喜欢哪位女明星?</qname> <qpoint>10</qpoint> <itemlist> <itemid>1</itemid> <itemname>张曼玉</itemname> <itemid>2</itemid> <itemname>林青霞</itemname> <itemid>3</itemid> <itemname>张柏芝</itemname> <itemid>4</itemid> <itemname>钟郦缇</itemname> <itemid>5</itemid> <itemname></itemname> </itemlist> </question> <question> <questionid>2</questionid> <qtype>multi</qtype> <qname>你喜欢刘德华吗?</qname> <qpoint>10</qpoint> <itemlist> <itemid>1</itemid> <itemname>从没听说过</itemname> <itemid>2</itemid> <itemname>上高中时喜欢,现在感觉他已经老了</itemname> <itemid>3</itemid> <itemname>一直比较喜欢</itemname> <itemid>4</itemid> <itemname>收集了许多他的资料,是他的铁杆Fans</itemname> <itemid>5</itemid> <itemname>非常赞赏他的敬业精神</itemname> </itemlist> </question> </test> </detail> 其中,questionid表示问题的编号,qtype表示问题的类型,如为single型即为单选,如为mutil即为多选,如为show即为文本描述。qname表示问题的内容,qpoint为问题的权值。itemid为答案的编号,itemname为答案的内容。当然还要有一项是qvalue记录问题的最终选项,这项是在填写调查表时添加进去的。 正如大家看到的,文档中嵌套了许多内容,在添加“问题”的各子节点内容时还要想办法添加“答案”对应的子节点内容,而后者整体在前者之中。然而如果要进行节点的删除操作,替换操作呢,定位的问题实在是有点复杂。我仿照这在论坛上下载的一个实例写了一些代码,仍不能够很好的实现各种操作,如下: Set objquestion = objXmlDoc.createElement("question") objXmlDoc.documentElement.appendChild objquestion ' 创建各个子节点 '----------------------------------------------------- Set objNode = objXmlDoc.createElement("questionid") objNode.Text = strid objquestion.appendChild objNode Set objNode = objXmlDoc.createElement("qname") objNode.Text = strname objquestion.appendChild objNode Set objNode = objXmlDoc.createElement("qtype") objNode.Text = strtype objquestion.appendChild objNode ...... '---------------------------------------------------- ' 从XML文件中删除数据 ' 需要首先设置Id Public Function DeleteFromXml(objXmlDoc) Dim objNodeList, objNode ClearError If objXmlDoc Is Nothing Then DeleteFromXml = False AddErr "Dom对象为空值" Exit Function End If If CStr(strId) = "-1" Then DeleteFromXml = False AddErr "未正确设置问题的ID属性" Exit Function End If Set objNodeList = objXmlDoc.getElementsByTagName("question") If objNodeList.length - strId < 0 Then DeleteFromXml = False AddErr "未找到相应的问题" Set objNodeList = Nothing Exit Function End If On Error Resume Next Set objNode = objXmlDoc.documentElement.removeChild(objNodeList(strId-1)) If objNode Is Nothing Then DeleteFromXml = False AddErr "删除问题失败" Set objNodeList = Nothing Exit Function Else objXmlDoc.save Server.MapPath(XMLFILE)'保存删除后的信息 End If Set objNode = Nothing Set objNodeList = Nothing If Err.Number = 0 Then DeleteFromXml = True Else DeleteFromXml = False AddErr Err.Description End If End Function 所以我很想听听大家的意见,如果您有好的想法,请告诉我,谢谢!
|
-- 作者:小鞋子 -- 发布时间:4/4/2004 12:12:00 AM -- 不管复杂.呵..建议是不是可以用到属性啊.. |
-- 作者:锋划雪月 -- 发布时间:4/7/2004 11:09:00 PM -- 谢谢!可是,我如何用脚本实现在节点树中添加新节点的同时加入其属性呢? |
-- 作者:锋划雪月 -- 发布时间:4/8/2004 11:39:00 AM -- 版主,管理员,您们也说句话啊!
|
-- 作者:admin -- 发布时间:4/8/2004 1:02:00 PM -- 新建一个节点,为他添加属性,,在把这个节点加入,就可以了。。 |
-- 作者:锋划雪月 -- 发布时间:4/8/2004 5:23:00 PM -- 大哥,你说的我知道哦,关键是如何通过dom对象在节点里加入属性,您告诉我写属性的关键字就成了. |
-- 作者:锋划雪月 -- 发布时间:4/8/2004 9:20:00 PM -- 那大姐,你说的我知道哦,关键是如何通过dom对象在节点里加入属性,您告诉我写属性的关键字就成了. |
-- 作者:33341112 -- 发布时间:12/20/2005 11:26:00 AM -- 有点复杂 |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
97.656ms |