2012-02-08 38 views
1

親愛Stackoverflowers:腳本解析XML和下載某些URL文件,然後將其傳輸到另一臺計算機

我需要你的幫助來完成以下任務:我需要一個主計算機能夠下載預定XML文件然後解析它;使用可用的信息,腳本應定期識別要從Web服務器下載的正確文件。最後,這個文件必須被轉移到另一臺沒有互聯網訪問的計算機上,並將它提取到一個給定的位置。然而,我有限制:我無法使用PHP來實現這一點,因爲我不能在那裏安裝任何東西;我建議通過MD5sum來做到這一點,但必須給定一天和一小時才能將文件下載到主計算機,並且另一小時和一天將其轉移到超薄終端。

我會解釋然後問。謝謝!

我設計這個XML:

<?xml version="1.0"?> 
<updateXML id="subdirectory1"> 
    <file> 
     <tarname>compressedFile.tar.gz</tarname> 
     <name>fileInsideName</name> 
     <filExtension>.ext</filExtension> 
     <url protocol="http://">someurl.com/mainDirectory</url> 
    </file> 
    <update> 
     <download>2012-02-02T03:00:00.00000</download> 
     <copyTo terminal="1">2012-02-02T09:00:00.00000</copyTo> 
    </update> 
</updateXML> 

而且這個工作的XML Schema(XSD)

<?xml version="1.0"?> 
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <xsd:element name="updateXML"> 
     <xsd:complexType> 
      <xsd:sequence> 

       <xsd:element name="file" minOccurs="1" maxOccurs="unbounded"> 
        <xsd:complexType> 
         <xsd:all> 
          <xsd:element name="tarname" type="xsd:string"/> 
          <xsd:element name="name" type="xsd:string"/> 
          <xsd:element name="filExtension" type="xsd:string"/> 
          <xsd:element name="url"> 
           <xsd:complexType> 
            <xsd:simpleContent> 
             <xsd:extension base="xsd:string"> 
              <xsd:attribute name="protocol" type="xsd:string" /> 
             </xsd:extension> 
            </xsd:simpleContent> 
           </xsd:complexType> 
          </xsd:element> 
         </xsd:all> 
        </xsd:complexType> 
       </xsd:element> 

       <xsd:element name="update" minOccurs="1" maxOccurs="1"> 
        <xsd:complexType> 
         <xsd:sequence> 
          <xsd:element name="download" type="xsd:dateTime" /> 
          <xsd:element name="copyTo"> 
           <xsd:complexType> 
            <xsd:simpleContent> 
             <xsd:extension base="xsd:string"> 
              <xsd:attribute name="terminal" type="xsd:int" /> 
             </xsd:extension> 
            </xsd:simpleContent> 
           </xsd:complexType> 
          </xsd:element> 
         </xsd:sequence> 
        </xsd:complexType> 
       </xsd:element> 

      </xsd:sequence> 
      <xsd:attribute name="id" type="xsd:string"/> 
     </xsd:complexType> 
    </xsd:element> 
</xsd:schema> 

我研究我發現XMLlint可以解析XML文件。現在沒有問題:

$ xmllint --noout --schema updatemenus.xsd updatemenus.xml 
updatemenus.xml validates 

我在一個過程中認爲,可以幫助我完成給定的任務。請告訴我,如果我建議的步驟是正確的:

  1. 生成XML並使用它的XSD對其進行驗證。
  2. 將它下載到主計算機並解析它。使用可用的信息構建完整的URL以供下載。
  3. 一旦下載安全複製它在LAN
  4. 檢查所需的終端是否有更新的XML它的可用和下載(cron進程?)

你認爲這是正確的?如果是這樣,現在我的XML是有效的,現在什麼? ='/ 我如何使用它的信息?我是XMLlint和XPath的新手。我現在能做什麼???

非常感謝。

+0

你能FTP嗎?你在哪個平臺上?你有CRON或預定任務嗎? – mmcglynn 2012-02-08 19:34:55

+0

@ mmcglynn感謝您的回答;)我無法FTP。要下載的文件和XML必須位於Web服務器中。我正在研究Linux Ubuntu(瘦客戶端有Lubuntu)。在主計算機上有crons任務(中間的!),所有這些都應該通過cron任務來完成= /我真的很無能...... =( – Metafaniel 2012-02-08 19:58:50

+0

好吧,CRON看起來比它更復雜,有很多例子,因爲這些東西已經存在了,你可以做到這一點! – mmcglynn 2012-02-08 21:05:36

回答

0

我無法與整個事情幫助,但你會在

http://www.w3.org/2001/XMLSchema.xsd 

編輯發現日期時間

我的意思是,你的文檔指定

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 

這是一個現有的文檔,但不是真正的.xsd文件,並且不會驗證您的任何XML。

我希望這會有所幫助。

+0

@shelter感謝您的幫助,請不要擔心。是的,我知道這一點,謝謝。如果我檢查我的XSD是否與你給我的這個URL有關係,那就沒有問題了:'xmllint --noout -schema http://www.w3.org/2001/XMLSchema.xsd updateFiles.xsd updateFiles.xsd validates'然而,在我的帖子中說,如果我檢查我的XML與我有效的XSD,我得到了那個錯誤...可能是什麼原因? u_u感謝! – Metafaniel 2012-02-08 19:46:37

+0

@shelter謝謝,但可能我沒有正確理解=(我在URL中添加了.xsd擴展名,我甚至下載了整個XMLSchema.xsd並嘗試對它進行驗證,但它是相同的行爲=( – Metafaniel 2012-02-08 20:09:21

+0

@shelter我發現了錯誤!= D問題出現在我的XSD中,我只寫了'type =「dateTime」',但它應該是'type =「xsd:dateTime」' 無論如何感謝... NOW什麼?U__U我解析了XML,現在該如何使用它?=( – Metafaniel 2012-02-08 20:27:09

相關問題