在asp.net中替换XML DataIsland文件

时间:2016-05-11 06:30:37

标签: javascript asp.net xml

我正在处理的应用程序,目前使用XML dataisland文件来检索下拉数据。下面是定义文件的代码。

    <xml id="DefaultDataIslands" src="../XMLData/DataIslands-<%=((User.Identity).Database)%>.xml">
    </xml>

以下是使用这些XML数据区的示例代码。

var oDataIsland = document.getElementById("DefaultDataIslands");
var oXmlNodes = oDataIsland.XMLDocument.selectNodes("XMLDataIslands/DataIsland[@ID='DIMRGroup']/Option");

此oDataIsland行在应用程序中总共使用了大约4k倍。应用程序本身就是Intranet,因此,我甚至可以要求用户直接下载xml文件。整点是将所需的更改保持为最小,同时删除所有XML标记的痕迹。我希望确保该应用程序在Chrome完成后可以在Chrome上运行。

我在这里检查了mozilla关于数据区的链接。 https://developer.mozilla.org/en/docs/Using_XML_Data_Islands_in_Mozilla

以下是基于该mozilla链接的代码。

    var doc = document.getElementById(strDataSource).contentDocument;
    var mainNode = doc.getElementsByTagName("DataIsland");
    var oXmlNodes;
    var strOptions = "";
    //finds the selected node based on the id, and gets the options for that id
    for (i = 0; i < mainNode.length; i++) {

        if (mainNode[i].getAttributeNode("ID").nodeValue == strDataMember) {
            oXmlNodes = mainNode[i].getElementsByTagName("Option");
        }
    }

此代码正确读取数据,在IE中完美运行(标准模式为10,没有怪癖),在完整解决方案中很容易做到改变。

唯一的问题是,document.getElementById(strDataSource).contentDocument;行在Chrome中失败了。这与Mozilla文档中提到的内容相同。但是某种方式contentDocument属性在chrome上未定义。

所以,我还需要一些关于如何解决这个问题的建议。我尝试了其他方法,使用HTTPRequest(每页请求太多),使用JSON(需要完全更改现有方法),使用后端处理XML而不是客户端(需要架构更改)。直到现在,所有这些想法都失败了。

我可以使用其他任何方法吗?或者我应该解决contentDocument问题吗?

1 个答案:

答案 0 :(得分:0)

要在Chrome中允许contentDocument,您必须使用--allow-file-access-from-files。以下是执行此操作的步骤:

  1. 获取Chrome浏览器的Chrome安装路径的网址 安装,例如 C:\用户-您的用户名\应用程序数据\本地\谷歌\铬\应用程序&gt;
  2. 使用命令行窗口启动Google Chrome浏览器 附加参数'-allow-file-access-from-files'。例如,路径 到您的chrome安装\ chrome.exe --allow-文件访问从-文件
  3. 每次测试时都可以使用的临时方法
    • 复制现有的chrome启动器
    • 按上述方式操作并使用新名称保存,例如chrome - testing
    • 或者,您只需使用上述内容创建一个新的启动器,然后使用它来启动chrome。
  4. Source