HTA加载XML

时间:2013-12-24 18:58:18

标签: xml hta

我的任务是加载一个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。

非常感谢任何帮助。 感谢。

1 个答案:

答案 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