2012-06-27 110 views
0

我的公司與另一家公司合作,爲我們提供了各種使用我們的軟件並與我們的軟件集成的閃光計。這些儀表使用XML文件進行配置,這些文件不是非常大,但對於不確切知道他們正在查看的人員而言並不直觀。我自己開發了一些小軟件,可以爲我們的客戶和員工提供配置此軟件的功能,這些軟件可以利用某種形式的GUI界面,但很簡單,可以用來修改這些XML文件,然後保存它們,客戶端側。這個想法是,這可能會滑入安裝在現場,在本地打開並使用的軟件包中。一個小XML修改器

我們目前有一個本地html頁面,顯示所有儀表的功能並存儲在安裝包中,以便客戶可以選擇他們想要使用的儀表。這導致我最初考慮擴展這個html頁面來提供我正在尋找的功能。通過對XML/HTML DOM和一些JavaScript的各種研究,我意識到雖然我可以做我想做的操作,但是沒有辦法將這個修改過的XML文檔拿到客戶機上,而無需安裝另一塊軟件,如PHP。

我在找什麼是要告訴我,我是遠離基地,並有一個乾淨的方式使用HTML/JavaScript/XML來做我想做的事(我知道這一點最有可能是一個夢想,但仍然是可取的),或者指導哪種語言可以在小尺寸範圍內實現。目前我們安裝的軟件包大約只有26mb供參考。我不介意做進一步的研究,這實際上僅僅是爲了可行性而開始/計劃的一步。所以希望我不必在客戶端機器上安裝任何新軟件,而且這可以在本地機器上實現,無需服務器端交互,佔用空間最小。

感謝所有提前反饋。非常感謝。

回答

0

下面是一段代碼片斷,可以幫助您處理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> 

希望它會幫助你一點點! 祝您有美好的一天!

+0

是的,我知道如何遍歷XML文件並獲取我需要的數據。我的問題是,我不知道如何將輸出保存到另一個XML文件。看似你知道如何做到這一點。我非常感謝在這方面的一些幫助。我注意到你提到了PHP。我試圖避免使用PHP,因爲如果可能的話,我不想安裝任何其他軟件來實現此目的。 – Benhamine

+0

我建議你先看看這個: http://flesler.blogspot.ca/2008/03/xmlwriter-for-javascript.html –

+0

哦,我......這可能正是我要找的。將這一點玩弄一下,看看它的力量。謝謝你,先生。 – Benhamine

0

有很多背景,但我不完全確定你的問題的技術方面。其中一部分似乎與HTML5本地存儲相關 - 有一個File API可能對此有幫助,但我沒有嘗試過。

問題的另一部分是關於在瀏覽器客戶端上修改XML。可能最好的解決方案是使用XSLT,這是一種旨在轉換XML的語言。

Saxon-CE是瀏覽器的XSLT 2.0處理器。作爲一個JavaScript應用程序,它具有JavaScript互操作性,您需要在需要時與客戶端上的本地存儲集成。我知道你處於早期階段,但如果你正在尋找可行的選擇,那麼Saxon-CE應該在你的名單上。

+0

是的,我會看看這些。我知道我提供了很多背景。我試圖讓這個場景容易理解。問題歸結爲,我需要一種方法來形成用戶可以手動保存的新XML文件,或者形成一個新的XML文件,該文件可以保存到用戶文件系統上的指定位置。我的空間有限,無法安裝此功能,並且這應該在本地機器上工作,即無服務器/客戶端關係。我希望這有助於澄清。我現在要去讀你的建議。 – Benhamine

+0

@Benhamine是的,背景是好的。所以,關於文件寫作,這篇博客文章可能會有所幫助:http://www.html5rocks.com/en/tutorials/file/filesystem/ - 另外,我明白無需客戶端/服務器關係,這就是爲什麼瀏覽器託管具有JavaScript互操作性的XSLT處理器(未壓縮的大小約1MB)可以作爲XML處理的一個選項。 – pgfearo

+0

好吧,我已經閱讀了這些內容,並且知道XSLT,出於某種原因,我誤讀了您的文章,並且認爲您說這將有助於文件寫入部分。哈哈,我在那裏很困惑。至於Filesystem API,這真的看起來很有用,可能會有所斬獲。我可能會最終使用它。我唯一擔心的是,Chrome是目前唯一支持它的唯一瀏覽器。我更喜歡這個在IE中運行,因爲它是標準的安裝瀏覽器(......可怕的IE瀏覽器......)。我將繼續保持生氣,但這可能會訣竅。謝謝你好,先生! – Benhamine