以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 DOM/SAX/XPath 』  (http://bbs.xml.org.cn/list.asp?boardid=11)
----  如何在dom树的末尾添加新的子节点并保存???  (http://bbs.xml.org.cn/dispbbs.asp?boardid=11&rootid=&id=6716)


--  作者:nanwei0351
--  发布时间:4/14/2004 11:40:00 AM

--  如何在dom树的末尾添加新的子节点并保存???
各位大虾:
      如何在dom树的美味添加新的子节点并保存??是否用到了dom的一些写操作的方法,具体是什么方法,请大虾告诉我!!!
--  作者:锋划雪月
--  发布时间:4/14/2004 12:05:00 PM

--  
我觉得你可以到下载区下载xmlsdk,里面有此内容的详细描述,包你满意.如果,你的本机有MSDN Library,当然更好,效果一样的.
--  作者:nanwei0351
--  发布时间:4/19/2004 11:42:00 AM

--  
我在下载区没有找到xmlsdk!!!!
--  作者:admin
--  发布时间:4/19/2004 11:50:00 AM

--  就是MSXML啦!!
以下是引用nanwei0351在2004-4-19 11:42:10的发言:
我在下载区没有找到xmlsdk!!!!


--  作者:ring_2015
--  发布时间:4/19/2004 1:40:00 PM

--  
document.createElement(tagname)

创建一个新的,空的Element节点。不知道是不是你想要的。


--  作者:hyandlsz
--  发布时间:4/19/2004 3:28:00 PM

--  
appendchild()
--  作者:wedge
--  发布时间:4/19/2004 3:52:00 PM

--  
使用DOM的createelement方法创建一个元素节点和文本节点,再使用DOM的的appendchild方法在根元素的最后一个节点后插入创建的元素节点,把文本节点作为新创建元素的子节点插入,就可以了!
<script language="vbscript">
set xmldom=createobject("msxml2.domdocument.4.0")
xmldom.async="false"
                xmldom.load("*.xml")  
               set objnewnode=xmldom.createelement("newnode")<!--创建元素节点b-->
xmldom.documentelement.appendchild(objnewnode)
set objnewtext=xmldom.createtextnode("textnode")<!--创建文本节点fff-->
xmldom.documentelement.lastchild.appendchild(objnewtext)
</script>

--  作者:ring_2015
--  发布时间:4/19/2004 4:39:00 PM

--  
感谢,感谢。很有用。
--  作者:nanwei0351
--  发布时间:4/20/2004 9:35:00 AM

--  
谢谢各位大虾的参与,帮我看一下以下的程序如何将添加的数据保存到xml文当中??
<HTML>
<HEAD><Title>HTML中的数据岛中的记录集</Title></HEAD>
<body bkcolor=#EEEEEE text=blue bgcolor="#00FFFF">
<Table align=center width="100%"><TR><TD align="center">
   <h5><b><font size="4" color="#FF0000">HTML中的XML数据岛记录编辑与添加</font></b></h5>
  </TD></TR></Table>
<HR>
酒店名称:<input type=text datasrc=#theXMLisland DataFLD=NAME size="76"><BR>
  地址:<input type=text datasrc=#theXMLisland DataFLD=Address size="76"><BR>
  主页:<input type=text datasrc=#theXMLisland DataFLD=HomePage size="76"><BR>
电子邮件:<input type=text datasrc=#theXMLisland DataFLD=E-Mail size="76"><BR>
  电话:<input type=text datasrc=#theXMLisland DataFLD=TelePhone size="76"><BR>
  级别:<input type=text datasrc=#theXMLisland DataFLD=Grade size="76"><HR>
<input id="first" TYPE=button value="<< 第一条记录" onclick="theXMLisland.recordset.moveFirst()">
<input id="prev" TYPE=button value="<上一条记录" onclick="theXMLisland.recordset.movePrevious()">  
<input id="next" TYPE=button value="下一条记录>" onclick="theXMLisland.recordset.moveNext()">  
<input id="last" TYPE=button value="最后一条记录>>" onclick="theXMLisland.recordset.moveLast()">&nbsp;  
<input id="Add" TYPE=button value="添加新记录" onclick="theXMLisland.recordset.addNew()">  

<XML ID="theXMLisland" src="new.xml">
</XML>
</body>  
</HTML>


new.xml


<?xml version="1.0" encoding="gb2312"?>
<HotelList>
<Hotel>
<Name>四海大酒店</Name>
<Address>海魂路1号</Address>
<HomePage>www.sihaohotel.com.cn</HomePage>
<E-Mail>master@sihaohotel.com.cn</E-Mail>
<TelePhone>(0989)8888888</TelePhone>
<Grade>五星级</Grade>
</Hotel>
<Hotel>
<Name>五湖宾馆</Name>
<Address>东平路99号</Address>
<HomePage>www.wuhu.com.cn</HomePage>
<E-Mail>web@wuhu.com.cn</E-Mail>
<TelePhone>(0979)1111666</TelePhone>
<Grade>四星级</Grade>
</Hotel>
<Hotel>
<Name>“大沙漠”宾馆</Name>
<Address>留香路168号</Address>
<HomePage>www.dashamohotel.com.cn</HomePage>
<E-Mail>master@dashamohotel.com.cn</E-Mail>
<TelePhone>(0989)87878788</TelePhone>
<Grade>五星级</Grade>
</Hotel>
<Hotel>
<Name>“画眉鸟”大酒店</Name>
<Address>血海飘香路2号</Address>
<HomePage>www.throstlehotel.com.cn</HomePage>
<E-Mail>chuliuxiang@throstlehotel.com.cn</E-Mail>
<TelePhone>(099)9886666</TelePhone>
<Grade>五星级</Grade>
</Hotel>
</HotelList>


--  作者:nanwei0351
--  发布时间:4/20/2004 11:08:00 AM

--  
为什么?我往进添加时,会提醒我数据源NAME域为只读域,不可更改!!!
<HTML>
<HEAD><Title>HTML中的数据岛中的记录集</Title></HEAD>
<body bkcolor=#EEEEEE text=blue bgcolor="#00FFFF">
<script language="vbscript">
dim xmldoc
sub add()

set xmldoc=createobject("Microsoft.XMLDOM")

xmldoc.load("new.xml")  
set objnewnode=xmldoc.createelement("newnode")<!--创建元素节点b-->
xmldoc.documentelement.appendchild(objnewnode)
set objnewtext=xmldoc.createtextnode("textnode")<!--创建文本节点fff-->
xmldoc.documentelement.lastchild.appendchild(objnewtext)
end sub
</script>

<Table align=center width="100%"><TR><TD align="center">
   <h5><b><font size="4" color="#FF0000">HTML中的XML数据岛记录编辑与添加</font></b></h5>
  </TD></TR></Table>
<HR>
酒店名称:<input type=text datasrc=#theXMLisland DataFLD=NAME size="76"><BR>
  地址:<input type=text datasrc=#theXMLisland DataFLD=Address size="76"><BR>
  主页:<input type=text datasrc=#theXMLisland DataFLD=HomePage size="76"><BR>
电子邮件:<input type=text datasrc=#theXMLisland DataFLD=E-Mail size="76"><BR>
  电话:<input type=text datasrc=#theXMLisland DataFLD=TelePhone size="76"><BR>
  级别:<input type=text datasrc=#theXMLisland DataFLD=Grade size="76"><HR>
<input id="first" TYPE=button value="<< 第一条记录" onclick="theXMLisland.recordset.moveFirst()">
<input id="prev" TYPE=button value="<上一条记录" onclick="theXMLisland.recordset.movePrevious()">  
<input id="next" TYPE=button value="下一条记录>" onclick="theXMLisland.recordset.moveNext()">  
<input id="last" TYPE=button value="最后一条记录>>" onclick="theXMLisland.recordset.moveLast()">&nbsp;  
<input id="Add" TYPE=button value="添加新记录" onclick="add()">

<XML ID="theXMLisland" src="new.xml">
</XML>

</body>  
</HTML>


--  作者:wedge
--  发布时间:4/20/2004 7:47:00 PM

--  
好象数据岛只能显示XML元素的内容,类似于只读游标,要想在XML里增添新元素,需要用DOM来显示,添加,删除XML元素!
--  作者:hyandlsz
--  发布时间:4/30/2004 11:08:00 AM

--  
dom
--  作者:宇宙人
--  发布时间:5/10/2004 9:42:00 PM

--  
我的方法:(可以参考《asp+xml高级编程》中第六章代码)
Dim XMLCode, sourceFile, xObj1, xObj2, rootNode, newNode, currentNode
   'Build the XML content for the new contact node
   XMLcode = XMLcode & "<CONTACT><NAME><FIRST_NAME>" & FirstName & "</FIRST_NAME>"
   XMLCode = XMLCode & "<LAST_NAME>" & LastName & "</LAST_NAME></NAME>"
   XMLCode = XMLCode & "<ADDRESS><STREET_INFO>" & StreetInfo & "</STREET_INFO>"
   XMLCode = XMLCode & "<CITY>" & City & "</CITY><STATE>" & State & "</STATE>"
   XMLCode = XMLCode & "<ZIP>" & Zip & "</ZIP></ADDRESS>"
   XMLCode = XMLCode & "<PHONE>" & Phone & "</PHONE></CONTACT>"

   'Set the source file location
   'sourceFile = Request.ServerVariables("APPL_PHYSICAL_PATH") & "\ch6\contacts2.xml"

   Set xObj1 = Server.CreateObject("Microsoft.XMLDOM")
   Set xObj2 = Server.CreateObject("Microsoft.XMLDOM")
   
   'Loads the contacts file
   xObj1.load(Server.MapPath("contacts2.xml"))

   'Sets the document element as the current node
   Set rootNode = xObj1.documentElement
   
   'If no file loaded, then abort
   If Not IsObject(rootNode) Then
       Exit Function
   End If

   'Loads XMLCode string as XML into a new node
   xObj2.loadXML(XMLCode)
   Set newNode = xObj2.documentElement

   'Add the new node to the list
   Set currentNode=rootNode.appendChild(newNode)

   'Saves changes
   xObj1.save("contacts2.xml")
   
    Set xObj2 = Nothing
    Set xObj1 = Nothing


--  作者:tjl2000
--  发布时间:5/25/2005 4:37:00 PM

--  

jsp的

try{
    //if(doc.getElementsByTagName("name")!=request.getParameter("Name")){
     Element root=doc.getDocumentElement();
     Node node_Person=doc.createElement("Person");
     
   /*  Node node_id=(Node)doc.createElement("id");
     Node tmp1=doc.createTextNode("tmp1");
     tmp1.setNodeValue(ID);
     node_id.appendChild(tmp1);  */

     Node node_Name=doc.createElement("Name");
     Node tmp1=doc.createTextNode("tmp1");
     tmp1.setNodeValue(Name);
     node_Name.appendChild(tmp1);
  Node node_Gn=doc.createElement("Gn");
     Node tmp2=doc.createTextNode("tmp2");
     tmp2.setNodeValue(Price);               
     node_Gn.appendChild(tmp2);
     
     Node node_Dm=doc.createElement("Dm");
     Node tmp3=doc.createTextNode("tmp3");
     tmp3.setNodeValue(Author);
     node_Dm.appendChild(tmp3);
    
     Node node_Yy=doc.createElement("Yy");
     Node tmp4=doc.createTextNode("tmp4");
     tmp4.setNodeValue(Publisher);
     node_Yy.appendChild(tmp4);
                  
             
     node_Person.appendChild(node_Name);             
     node_Person.appendChild(node_Gn);           
     node_Person.appendChild(node_Dm);           
     node_Person.appendChild(node_Yy);
     //node_Person.appendChild(node_price);
     root.appendChild(node_Person);
     TransformerFactory tFactory=TransformerFactory.newInstance();
     Transformer transformer=tFactory.newTransformer();
     DOMSource source=new DOMSource(doc);
     StreamResult result=new StreamResult(new java.io.File(filename));
     transformer.transform(source,result);
  //  }
   //else{
    // out.println("这本书已存在,添加失败");
    //}
    }catch(Exception e){
        e.printStackTrace();
    }


--  作者:jason_0313121
--  发布时间:5/28/2005 4:11:00 PM

--  
在javascript中用doc.save(服务器目录)试试
--  作者:hacken
--  发布时间:6/9/2005 9:05:00 AM

--  
不错 学会了很多东西


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
7,847.656ms