我的任务是加载一个xml文档,并允许用户修改xml的内容并在用户完成时保存。保存后我需要通过电子邮件发送xml文件管理员在网站上发布。我知道我可以使用服务器端代码加载,修改和保存xml文档,但我的任务是找到一种只使用javascript来实现此目的的方法。这是一个只有某些用户才能使用的Intranet应用程序,因此我决定使用html应用程序。 我首先开始使用VS创建一个网站来执行此操作但后来发现无法使用javascript保存xml文档,因此我切换到了一个hta应用程序。 在VS中,我能够加载xml文档并在基诺网格中显示结果,但无法保存xml。在我的html应用程序中,我可以保存一个xml文档,但它不会加载xml及其所有节点。
<?xml version="1.0" encoding="iso-8859-1"?>
<rpp>
<city name="SomeName">
<property>Owner</property>
<location>Address</location>
<phone>phone</phone>
</city>
</rpp>
使用Javascript:
var xml = loadXMLDoc("rpp.xml");
function loadXMLDoc(dname) {
if (window.ActiveXObject) {
xhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
else {
xhttp = new XMLHttpRequest();
}
xhttp.open("GET", dname, false);
if (xhttp.overrideMimeType)
xhttp.overrideMimeType('text/xml');
xhttp.send("");
var xmlDoc = xhttp.responseXML;
if (!xmlDoc) {
if (isIE) {
xmlDoc = getMSXmlParser();
xmlDoc.async = false;
xmlDoc.loadXML(xhttp.responseText);
}
else
xmlDoc = (new DOMParser()).parseFromString(xhttp.responseText, 'text/xml');
}
return xmlDoc;
}
//code came from this site
//http://blog-rat.blogspot.com/2010/11/xmlhttprequestresponsexml-returns-null.html
function getMSXmlParser() {
var parser = ['Msxml2.DOMDocument.6.0',
'Msxml2.DOMDocument.5.0',
'Msxml2.DOMDocument.4.0',
'Msxml2.DOMDocument.3.0',
'MSXML2.DOMDocument',
'Microsoft.XMLDOM']; // the same as MSXML.DOMDocument
for (var i in parser) {
try {
var xParser = new ActiveXObject(parser[i]);
if (xParser) {
return xParser;
}
}
catch (e) { }
}
return null;
}
当我用VS加载我的xml时,我检索所有节点及其值,我能够在kendo网格中显示该信息。 当我从hta加载我的xml时,没有childNodes。
非常感谢任何帮助。 感谢。
答案 0 :(得分:0)
您可能需要考虑在HTA中使用vbscript。这是一个很棒的资源的链接,它包含使用vbscript加载,保存,追加和编辑xml的代码。
http://technet.microsoft.com/en-us/magazine/2008.02.heyscriptingguy.aspx?pr=PuzzleAnswer
此外,如果您是HTML应用程序的新手,那么您可以从Microsoft下载HTA Helpomatic。这是一个包含特定HTA代码的演示HTA。
http://www.microsoft.com/en-gb/download/details.aspx?id=17332