Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 一个小的XML修饰符_Javascript_Xml_Html - Fatal编程技术网

Javascript 一个小的XML修饰符

Javascript 一个小的XML修饰符,javascript,xml,html,Javascript,Xml,Html,我的公司与另一家公司合作,该公司为我们提供各种闪光计,供我们使用并与我们的软件集成。这些仪表使用XML文件进行配置,这些文件不是非常大,但对于不知道自己在看什么的人来说并不直观。我自己开发了一些小东西,我可以提供给我们的客户和员工,他们可以配置这个软件,使用某种形式的GUI界面,无论多么简单,都可以用来修改这些XML文件,然后在客户端保存它们。其想法是,可以将其放入安装在现场、在本地打开并使用的软件包中 我们目前有一个本地html页面,显示所有仪表的功能,并存储在安装包中,以便客户可以选择他们想

我的公司与另一家公司合作,该公司为我们提供各种闪光计,供我们使用并与我们的软件集成。这些仪表使用XML文件进行配置,这些文件不是非常大,但对于不知道自己在看什么的人来说并不直观。我自己开发了一些小东西,我可以提供给我们的客户和员工,他们可以配置这个软件,使用某种形式的GUI界面,无论多么简单,都可以用来修改这些XML文件,然后在客户端保存它们。其想法是,可以将其放入安装在现场、在本地打开并使用的软件包中

我们目前有一个本地html页面,显示所有仪表的功能,并存储在安装包中,以便客户可以选择他们想要使用的仪表。这让我开始考虑扩展这个html页面,以提供我想要的功能。通过对XML/HTMLDOM和一些JavaScript的各种研究,我意识到虽然我可以做我想做的操作,但没有一种方法可以在不安装其他软件(如PHP)的情况下将修改后的XML文档发送到客户机上

我要找的是,要么有人告诉我,我离目标太远了,有一种干净的方法可以使用HTML/JavaScript/XML来做我想做的事情,我知道这很可能是一个白日梦,但仍然是可取的,要么有人指导我用哪种语言来实现这一目标,并且占用的空间很小。我们安装的当前软件包仅为26mb,仅供参考。我不介意做进一步的研究,出于可行性考虑,这实际上只是一个开始/规划步骤。所以希望我不必在客户机上安装任何新软件,这可以在本地机器上实现,无需服务器端交互,只需占用最少的空间


提前感谢大家的反馈。非常感谢。

这是一段代码片段,可以帮助您处理XML,您只需将输出保存在另一个XML文件中即可。 只需使用html/php/css/Javascript进行布局

        var req = new Request({
    method : 'get',
    url: 'templates/absolu/animation.xml',
    onSuccess: function(txt,xml){
      /* we grab the XML data, particularly the content of diapositive tags */

      x=xml.documentElement.getElementsByTagName("diapositive");
      for (i=0;i<x.length;i++){
        xx=x[i].getElementsByTagName("image");
        {
          try{listeImages[i] = xx[0].firstChild.nodeValue;}
          catch (er){listeImages[i] = '';
                     list[i]['Image'] = xxx[0].firstChild.nodeValue;}
        }
        xx=x[i].getElementsByTagName("url");
        {
          try{listeURL[i] = xx[0].firstChild.nodeValue;}
          catch (er){listeURL[i] = '';
                     list[i]['URL'] = xxx[0].firstChild.nodeValue;}
        }
        xx=x[i].getElementsByTagName("text");
        {
          try{listeTextes[i] = xx[0].firstChild.nodeValue;
              liste[i]['Texte'] = xxx[0].firstChild.nodeValue;}
          catch (er){listTextes[i] = '';}
        }
        xxx=x[i].getElementsByTagName("date");
        {
        try{listeDates[i] = xxx[0].firstChild.nodeValue;}
          catch (er){listeDates[i] = "21112035";}
        }
      }
以下是我的XML文件片段的内容

  <diaporama>
      <diapositive>
      <date>01012015</date>
      <image>images/promos/promo-1.jpg</image>
      <url><![CDATA[index.php?option=com_content&view=article&id=70&Itemid=66&promo=FR2&promoname=Avantages_du_cable_30_95]]></url>
  </diapositive>  

  <diapositive>
    <date>01012015</date>
    <image>images/promos/promo-2.jpg</image>
    <url><![CDATA[index.php?option=com_content&view=article&id=70&Itemid=66&promo=FR2&promoname=Avantages_du_cable_30_95]]></url>
  </diapositive>
</diaporama>
希望它能帮你一点忙!
祝你今天愉快

有很多背景知识,但我不能完全确定你的问题的技术方面。其中一个部分似乎与HTML5本地存储有关——这里有一个可能会有所帮助,但我自己还没有尝试过

问题的另一部分是关于在浏览器客户端上修改XML。最好的解决方案可能是使用XSLT,一种设计用于转换XML的语言


是浏览器的XSLT 2.0处理器。作为一个JavaScript应用程序,它具有JavaScript互操作性,您需要在需要时与客户端上的本地存储集成。我知道您还处于早期阶段,但如果您正在寻找可行的选项,那么Saxon CE可能会出现在您的列表中。

是的,我知道如何遍历XML文件并获取所需的数据。我的问题是,我不知道如何将输出保存到另一个XML文件。看来你知道怎么做。我非常感谢你在这方面的帮助。我注意到你提到了PHP。我尽量避免使用PHP,因为如果可能的话,我不想安装任何额外的软件来实现这一点。我建议你看看这个:哦,天哪……这可能正是我想要的。我们来试试这个,看看它的能量。谢谢你,好先生。非常欢迎你,如果这是你要找的,请别忘了让我知道!这是如此接近Ghillied,也许我只是缺少了一些东西…我看到我可以将XML writer的内容刷新为字符串,它工作得非常漂亮,格式正是我所需要的…有没有一种方法可以在我的页面上提供一个链接,用户可以右键单击,另存为,生成的XML代码?我需要一种方法将代码放到本地桌面上。是的,我会看看这些。我知道我提供了很多背景资料。我试图让场景更容易理解。问题归根结底是,我需要一种方法来形成用户可以手动保存的新XML文件,或者形成可以保存到用户文件系统上指定位置的新XML文件。我的空间有限,无法安装此功能,这些功能都应在计算机上本地工作,即没有服务器/客户端关系。我希望这有助于澄清。我现在就去读你的建议。@Benhamine是的,背景不错。因此,关于文件编写,这篇博客文章可能会有所帮助:-另外,我理解不需要客户机/服务器关系,这就是为什么浏览器托管的XSLT处理器(未压缩大小约1MB,具有JavaScript互操作性)可以作为XML处理的一个选项。好的,我已经阅读了这些内容,我了解XSLT,出于某种原因,我误读了你的帖子,以为你说这会有助于解决问题
文件写入部分。我在那里很长一段时间都很困惑,哈。至于文件系统API,这看起来真的很有用,可能会奏效。我可能会用上它。我唯一担心的是Chrome是目前唯一完全支持它的浏览器。我更喜欢在IE中运行,因为它是标准安装的浏览器…可怕的IE。。。。我会继续支持,但这可能会奏效。谢谢,好先生!文件系统API似乎也不喜欢在本地计算机上运行:出于安全原因,浏览器不允许您从以下文件运行应用程序://。事实上,如果您从File:///本地运行应用程序,许多功能强大的存储API(如文件系统、BlobBuilder和FileReader)都会抛出错误。也许您应该考虑使用WebBub控件在.NET应用程序中托管IE?使用此功能,您可以使用与.NET相同的权限从浏览器访问本地文件系统。然后,可以从JavaScript调用如下内容:windows.external.myinterface.storexmlString;它将调用.NET方法。