本次制作综合信息网在图库德操作中,主要运用了Ajax、XML与XSLT综合使用
一、在服务器端进行XSLT的转换
在这个函数中主要的功能就是通过DATASET产生一个XML文档对象,将其存在内存流中然后进行XSLT的转化直接输出到Response流中,
为了不生成物理的XML文档,这里采用MemoryStream、XmlWriter、XmlReader搭配使用产生这个效果。这里要注意的是”ms.Seek(0, SeekOrigin.Begin)“:当使用xml.Save()这个方法将xml文档对象的内容写入内存流的过程中,流中的指针随写入结束一直知道流最后一个位置,在用XmlReader从内存流中读取内容之前,必须将流指针归位。否则会因为指针在最后位置而无法读出任何内容(就这个问题差点雷死我。。。)
二、DATASET与XML的转换
在制作DATASET转化成XML文档的时候,发现使用XmlDataDocument xml = new XmlDataDocument(myData)、还是DATASET.WriteXML()或其他方法转换,都发现在数据集中当某个字段为空的时候,转换后的XML文档中都没有对应的元素。由于目前没有找到解决的方法,我暂时用自己写的一个方法来生成xml文档。
三、由于使用Ajax所以存在跨浏览器的问题一下本次不同浏览器对xml文档操作的差异
IE:
var items = xmlDoc.selectNodes("//NewDataSet/item/JTZK");//取得一个节点元素
items[i].text;//取得节点的内容
Mozila:
var items = xmlDoc.getElementsByTagName("JTZK");
items[i].firstChild.textContent;//取得节点的内容