如果是动态生成你就在服务器的response header上加上Last-Modified
然后你第二次请求的头上就会有If-Modified-Since
这个时间就是你第一次请求道本地的时间
如果服务的 文件的属性 不比你新
服务器就返回304 .然后你浏览器自然就在缓存里面取这个 xml
主要是服务器返回304
如果是请求静态文件 那一般的服务器都会自动的加上Last-Modified的
假设你的XML文件在js中的变量名为 xmldoc,并且已经成功读取试题信息首先,你能根据页面上标签组装好XML数据流,或者在用户修改操作的时候,将修改的结果即时反应到xmldoc上相应的节点也可以
更改xml节点的操作,首先通过XPath找到节点(node),在通过节点(node)操作node.setAttribute(attrName, value)
4
然后,直接将xmldoc提交给服务端保存就可以了
这个是我用的代码:
if (!window.ActiveXObject) {
Element.prototype.selectNodes = function(sXPath) {
var oEvaluator = new XPathEvaluator()
var oResult = oEvaluator.evaluate(sXPath, this, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null)
var aNodes = new Array()
if (oResult != null) {
var oElement = oResult.iterateNext()
while(oElement) {
aNodes.push(oElement)
oElement = oResult.iterateNext()
}
}
return aNodes
}
Element.prototype.selectSingleNode = function(sXPath) {
var oEvaluator = new XPathEvaluator()
// FIRST_ORDERED_NODE_TYPE returns the first match to the xpath.
var oResult = oEvaluator.evaluate(sXPath, this, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null)
if (oResult != null) {
return oResult.singleNodeValue
} else {
return null
}
}
}
function XMLDocument() {
var xmlDoc = null
if (window.ActiveXObject) {
xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
} else if (document.implementation &&document.implementation.createDocument){
// code for Mozilla, Firefox, Opera, etc.
xmlDoc=document.implementation.createDocument("","",null)
} else {
alert('Your browser cannot handle this script')
}
xmlDoc.async=false
return xmlDoc
}
function selectSingleNode(xmlDoc, elementPath) {
if(window.ActiveXObject) {
return xmlDoc.selectSingleNode(elementPath)
} else {
var xpe = new XPathEvaluator()
var nsResolver = xpe.createNSResolver( xmlDoc.ownerDocument == null ? xmlDoc.documentElement : xmlDoc.ownerDocument.documentElement)
var results = xpe.evaluate(elementPath,xmlDoc,nsResolver,XPathResult.FIRST_ORDERED_NODE_TYPE, null)
return results.singleNodeValue
}
}
/*
//var ret = xmlDoc.loadXML("<?xml version=\"1.0\" encoding = \"GB2312\" ?><html>sdfasdfasdf</html>")
//var d = xmlDoc.load(fileName)
var xmlDoc = new XMLDocument()
var s = xmlDoc.loadXML('<t>dsadf</t>')
if( s ) {
var elements = xmlDoc.getElementsByTagName('t')
var element = elements[0]
var newElement = xmlDoc.createElement('DIV')
element.appendChild(newElement)
newElement.text = 'newdivs'
xmlDoc.save('C:\\im.xml')
}
*/
回楼下的朋友,我再前面已经说过提交给服务端,下面的代码只是用来参考,浏览器肯定是没有写权限的
可以修改,我对JS并不是非常熟悉,给你一段代码参考一下。<script>var xmldom
function test()
{
xmldom = new ActiveXObject("Msxml2.DOMDocument")
xmldom.async = false
xmldom = document.all.mxh.XMLDocument
}
function test2()
{
var xmldom = new ActiveXObject("Msxml2.DOMDocument")
xmldom.async = false
xmldom = document.all.mxh.XMLDocument
node = xmldom.selectSingleNode("//nodeB")
node2 = xmldom.createElement("nodeB")
node2.text=parseInt(node.text)+1
xmldom.documentElement.replaceChild(node2,node)
node = xmldom.selectSingleNode("//nodeB")
alert(node.text)
alert(xmldom.xml)
}
function test3()
{
document.f.xmldata.value= document.all.mxh.XMLDocument.xml
alert(document.f.xmldata.value)
document.f.submit()
}
</script>
<body>
<XML id=mxh>
<root>
<nodeA>nodeA</nodeA>
<nodeB>30</nodeB>
</root>
</XML>
<form name=f action="xx.asp">
<input name=xmldata type=hidden>
<input onclick="test()" type="button" value=old>
<input onclick="test2()" type="button" value=请多点几次>
<input onclick="test3()" type="button" value=保存>
</form>
保存,调用 xmldom.save("xxx.xml")