JavaScript脚本读取xml数据到HTML文件
<%@ page contentType="text/xml; charset=gbk" language="java" import="java.sql.*" errorPage="" %> <?xml version="1.0" encoding="gb2312"?> <M2MDoc> <SPID>3</SPID> <SPName>3</SPName> <MovieList> <Item MovieID="103704" MovieName="忍" Class="动作片" /> <Item MovieID="103701" MovieName="风斗士" Class="动作片" /> <Item MovieID="103693" MovieName="无血无泪" Class="动作片" /> </MovieList> <Page Number="1" AllPage="3" Count="45" /> </M2MDoc>
—————————————————————————————————
<script language="javascript" type="text/javascript"> var xhai_xml;
function xhai_GetXML(){ xhai_xml = new ActiveXObject("Microsoft.XMLDOM"); xhai_xml.async=true; xhai_xml.onreadystatechange = GetReady; xhai_xml.load("datafile.xml") }
function GetReady(){ if(xhai_xml.readyState==4){ if(xhai_xml.parseError.errorCode==0){ document.write("SPID:"+xhai_xml.documentElement.selectNodes("SPID")(0).text+"<br />"); document.write("SPName:"+xhai_xml.documentElement.selectNodes("SPName")(0).text+"<br />"); document.write("<br />"); var i,c,d,Line; var MovieList = xhai_xml.documentElement.selectNodes("//MovieList/Item"); var j=MovieList.length; Line = MovieList.item(0); d=Line.attributes.length; for(c=0;c<d;c++){ document.write(Line.attributes(c).name+" | "); } document.write("<br />");
for(i=0;i<j;i++){ Line = MovieList.item(i); d=Line.attributes.length; for(c=0;c<d;c++){ document.write(Line.attributes(c).value+" | "); } document.write("<br />"); } document.write("<br />"); var page = xhai_xml.documentElement.selectNodes("//Page").item(0) j=page.attributes.length; for(i=0;i<j;i++){ document.write(page.attributes(i).name+":"); document.write(page.attributes(i).value+" "); } } delete(xhai_xml); } } xhai_GetXML(); </script>
本例输出结果
SPID:3 SPName:3
MovieID | MovieName | Class | 103704 | 忍 | 动作片 | 103701 | 风斗士 | 动作片 | 103693 | 无血无泪 | 动作片 |
Number:1 AllPage:3 Count:45
输出格式可自定修改
————————————————————————————————
读取xml节点的数据总结
读取xml节点的数据总结
/*读取xml数据 两种xml方式*/ <aaa> <bb>something</bb> <cc>something</cc> </aaa> <aaa> <add key="123" value="321"/> </aaa>
/*第一种方法*/ DS.ReadXml("your xmlfile name"); Container.DataItem("bb"); Container.DataItem("cc"); DS.ReadXmlSchema("your xmlfile name"); /*第二种方法*/ <aaa> <add key="123" value="321"/> </aaa> 如果我要找到123然后取到321应该怎么写呢? using System.XML; XmlDataDocument xmlDoc = new System.Xml.XmlDataDocument(); xmlDoc.Load(@"c:\Config.xml"); XmlElement elem = xmlDoc.GetElementById("add"); string str = elem.Attributes["value"].Value /*第三种方法: SelectSingleNode 读取两种格式的xml *---/ -------------------------------------------------------------------- <?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <ConnectionString>Data Source=yf; user id=ctm_dbo;password=123</ConnectionString> </appSettings> </configuration> -------------------------------------------------------------------------- XmlDocument doc = new XmlDocument(); doc.Load(strXmlName); XmlNode node=doc.SelectSingleNode("/configuration/appSettings/ConnectionString"); if(node!=null) { string k1=node.Value; //null string k2=node.InnerText;//Data Source=yf; user id=ctm_dbo;password=123 string k3=node.InnerXml;//Data Source=yf; user id=ctm_dbo;password=123 node=null; } ******************************************************************** <?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="ConnectionString" value="Data Source=yf; user id=ctm_dbo;password=123" /> </appSettings> </configuration> **--------------------------------------------------------------------** XmlNode node=doc.SelectSingleNode("/configuration/appSettings/add"); if(node!=null) { string k=node.Attributes["key"].Value; string v=node.Attributes["value"].Value; node=null; } *--------------------------------------------------------------------* XmlNode node=doc.SelectSingleNode("/configuration/appSettings/add"); if(node!=null) { XmlNodeReader nr=new XmlNodeReader(node); nr.MoveToContent(); //检查当前节点是否是内容节点。如果此节点不是内容节点,则读取器向前跳至下一个内容节点或文件结尾。 nr.MoveToAttribute("value"); string s=nr.Value; node=null; }
读写xml所有节点个人小结
读: //打开某文件(假设web.config在根目录中) string filename=Server.MapPath("/") + @"WebApplication1\web.config"; XmlDocument xmldoc= new XmlDocument(); xmldoc.Load(filename); //得到顶层节点列表 XmlNodeList topM=xmldoc.DocumentElement.ChildNodes; foreach(XmlElement element in topM) { if(element.Name.ToLower()=="appsettings") { //得到该节点的子节点 XmlNodeList nodelist=element.ChildNodes; if ( nodelist.Count >0 ) { //DropDownList1.Items.Clear(); foreach(XmlElement el in nodelist)//读元素值 { //DropDownList1.Items.Add(el.Attributes["key"].InnerXml); //this.TextBox2.Text=el.Attributes["key"].InnerText; this.TextBox2.Text=el.Attributes["key"].Value; this.Label1.Text=el.Attributes["value"].Value; //同样在这里可以修改元素值,在后面save。 // el.Attributes["value"].Value=this.TextBox2.Text; } } } } xmldoc.Save(filename); 在某节点下增加一个元素,并设置值: if(element.Name.ToLower()=="appsettings") { XmlElement elem =xmldoc.CreateElement("add"); element.AppendChild(elem); elem.InnerText="ltp"; xmldoc.Save(filename); } 效果: <appSettings> <add key="密码" value="admin" /> <add>ltp</add> </appSettings> 在某节点下增加一个元素,并增加两个属性: if(element.Name.ToLower()=="appsettings") { XmlElement elem =xmldoc.CreateElement("add"); element.AppendChild(elem); XmlAttribute xa=xmldoc.CreateAttribute("key"); xa.Value="ltp"; XmlAttribute xa2=xmldoc.CreateAttribute("value"); xa2.Value="first"; elem.SetAttributeNode(xa); elem.SetAttributeNode(xa2); xmldoc.Save(filename); } 效果: <appSettings> <add key="密码" value="admin" /> <add key="ltp" value="first" /> </appSettings> //添加空元素: XmlNode node=doc.CreateElement(groupname); node.InnerText=""; doc.LastChild.AppendChild(node); doc.Save(xmlfile); 删除一个节点元素 string itemname=this.listBox1.SelectedItem.ToString(); this.listBox1.Items.Remove(this.listBox1.SelectedItem); //begin del xmlfile XmlDocument doc=new XmlDocument(); doc.Load(xmlfile); XmlNodeList topM=doc.DocumentElement.ChildNodes; foreach(XmlElement element in topM) { if(element.Name==this.comboBox1.Text) { //得到该节点的子节点 XmlNodeList nodelist=element.ChildNodes; foreach(XmlElement el in nodelist)//读元素值 { if(el.Attributes["key"].Value==itemname) { element.RemoveChild(el); } }//循环元素 }//得到组 }//循环组 doc.Save(xmlfile); //一定要保存一下,否则不起作用 //筛选数据 private void Reader_Xml(string pathFlie) { XmlDocument Xmldoc=new XmlDocument(); Xmldoc.Load(pathFlie); XmlNodeList Record1=Xmldoc.DocumentElement.SelectNodes(Code[@id='1']) int f=0; foreach(XmlNode xnode in Record1) { } }
用javascript操作xml
<script language="JavaScript"> <!-- var doc = new ActiveXObject("Msxml2.DOMDocument"); //ie5.5+,CreateObject("Microsoft.XMLDOM")
//加载文档 //doc.load("b.xml");
//创建文件头 var p = doc.createProcessingInstruction("xml","version='1.0' encoding='gb2312'");
//添加文件头 doc.appendChild(p);
//用于直接加载时获得根接点 //var root = doc.documentElement;
//两种方式创建根接点 // var root = doc.createElement("students"); var root = doc.createNode(1,"students","");
//创建子接点 var n = doc.createNode(1,"ttyp","");
//指定子接点文本 //n.text = " this is a test"; //创建孙接点 var o = doc.createElement("sex"); o.text = "男"; //指定其文本
//创建属性 var r = doc.createAttribute("id"); r.value="test";
//添加属性 n.setAttributeNode(r);
//创建第二个属性 var r1 = doc.createAttribute("class"); r1.value="tt"; //添加属性 n.setAttributeNode(r1);
//删除第二个属性 n.removeAttribute("class");
//添加孙接点 n.appendChild(o);
//添加文本接点 n.appendChild(doc.createTextNode("this is a text node."));
//添加注释 n.appendChild(doc.createComment("this is a comment\n")); //添加子接点 root.appendChild(n); //复制接点 var m = n.cloneNode(true);
root.appendChild(m); //删除接点 root.removeChild(root.childNodes(0));
//创建数据段 var c = doc.createCDATASection("this is a cdata"); c.text = "hi,cdata"; //添加数据段 root.appendChild(c); //添加根接点 doc.appendChild(root);
//查找接点 var a = doc.getElementsByTagName("ttyp"); //var a = doc.selectNodes("//ttyp");
//显示改接点的属性 for(var i= 0;i<a.length;i++) { alert(a[i].xml); for(var j=0;j<a[i].attributes.length;j++) { alert(a[i].attributes[j].name); } }
//修改节点,利用XPATH定位节点 var b = doc.selectSingleNode("//ttyp/sex"); b.text = "女";
//alert(doc.xml);
//XML保存(需要在服务端,客户端用FSO) //doc.save(); //查看根接点XML if(n) { alert(n.ownerDocument.xml); }
//--> </script>
怎样通过XSLT把编辑的内容嵌入网页呢???
大家好,在这个论坛的帮助下,我的本科毕设即将完成了!!!!!!先谢谢大家!!! 现在遇到一个问题: 我想把已经编好的东西嵌到html或者xhtml网页里 在我的xml源文档中,有一个元素<page id="aaaid" ref="bbbaddress"> 就是为了嵌入网页设计的 其中,aaaid和bbbaddress都不是已知的,是根据用户需要他写什么我的背景就是什么,应该怎么实现呢??? 请大家帮帮忙吧,答辩之前最后一关!!!!!!谢谢!!!
javascript: function loadXml(xmlSource) { var xmlDocument; if(window.ActiveXObject) { xmlDocument = new ActiveXObject("Msxml2.DOMDocument"); } else { xmlDocument = document.implementation.createDocument("", "", null); } xmlDocument.async = false; xmlDocument.load(xmlSource); return xmlDocument; }
function loadXsl(xmlDocument) { var xslDocument = new XSLTProcessor(); xslDocument.importStylesheet(xmlDocument); return xslDocument; }
function transformXml(xmlSource, xslSource) { if(window.ActiveXObject) { var xmlDocument = loadXml(xmlSource); var xslDocument = loadXml(xslSource); xmlDocument.transformNodeToObject(xslDocument, xmlDocument); return xmlDocument; } else { var xmlDocument = loadXml(xmlSource); var xslDocument = loadXml(xslSource); var xslProcessor = loadXsl(xslDocument); return xslProcessor.transformToDocument(xmlDocument); } }
« 1 ›
.: 公告
« August 2025 » 日 一 二 三 四 五 六 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
.: 我的分类(专题)
.: 最新日志
.: 最新回复
blog名称:[小鸟天堂] 日志总数:5 评论数量:2 留言数量:-3 访问次数:43948 建立时间:2007年5月22日
.: 留言板
.: 链接