2012-02-08 2 views
1

친애하는 Stackoverflowers을 XML을 구문 분석하고 특정 URL에서 파일을 다운로드 다른 컴퓨터로 전송하기 : 내가 미리 정의를 다운로드 할 수 있도록 마스터 컴퓨터가 필요합니다 : 스크립트

나는 다음과 같은 작업을 수행하는 네 종류의 도움이 필요합니다 그런 다음 XML 파일을 구문 분석합니다. 사용 가능한 정보가 있으면 스크립트는 웹 서버에서 정기적으로 다운로드 할 올바른 파일을 식별해야합니다. 마지막으로이 파일은 동일한 LAN에서 인터넷에 접속하지 않고 다른 컴퓨터로 옮겨 져서 주어진 위치로 추출해야합니다. 그러나 나는 한계가있다. PHP를 사용하여이 작업을 수행 할 수 없기 때문에 거기에 아무 것도 설치할 수 없다. 필자는 MD5sums를 통해 이것을 제안했지만 파일을 마스터 컴퓨터에 다운로드 할 수 있도록 주어진 요일과 시간을 제공해야하고 슬림 한 터미널로 전송할 시간과 요일을 별도로 지정해야합니다.

나는 그 때 질문 할 것이다. 감사!

이 나는이 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 스키마 (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. 일단 새로운 XML이 가능한 경우 LAN
  4. 확인에 필요한 단자에 보안 복사본을 다운로드하고 그것을 (크론 과정?)

당신이 올바른 생각하십니까 다운로드? 그렇다면 지금 내 XML이 유효하다는 걸 어떻게 알았지? = '/ 어떻게 정보를 사용할 수 있습니까 ?? 나는 XMLlint와 XPath가 처음이다. 내가 지금 무엇을 할 수 있을까???

고마워요.

+0

FTP를 사용할 수 있습니까? 어떤 플랫폼을 사용하고 계십니까? CRON 또는 예약 된 작업을 사용할 수 있습니까? – mmcglynn

+0

@ mmcglynn 답변 해 주셔서 감사합니다;) FTP 할 수 없습니다. 다운로드 할 파일과 XML은 웹 서버에 있어야합니다. 나는 Linux Ubuntu에서 일하고있다. (슬림 한 클라이언트는 Lubuntu를 가지고있다.)마스터 컴퓨터에서 사용할 수있는 crons 작업이 있습니다 (가운데 하나!) 그리고이 모든 작업은 cron 작업을 통해 이루어져야합니다./나는 정말로 단서가 있습니다. = ( – Metafaniel

+0

CRON은 더 복잡해 보입니다. – mmcglynn

답변

0

나는 모든 일에 도움이되지 수 있지만

내 포인트 문서가

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

를 지정하는 것입니다

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

편집에 날짜 _ 시간을 찾을 수있는 기존 .xsd 파일이 아니며 XML을 검증하지 않습니다.

이 정보가 도움이되기를 바랍니다.

+0

@shelter 도와 주셔서 감사합니다. 걱정하지 마십시오. 네, 고마워요. 고마워요. 만약 당신이 내게 준이 URL에 대해 내 XSD를 확인해도 아무런 문제가 없다 :'xmllint --noout -schema http://www.w3.org/2001/XMLSchema.xsd updateFiles.xsd updateFiles.xsd validates' 그러나 내 게시물에, 내 유효한 XSD에 대한 내 XML을 확인하면 그 오류가있어 ... 왜 그럴 수 있을까? u_u 감사합니다! – Metafaniel

+0

@shelter 고맙지 만 어쩌면 정확하게 이해하지 못했을 수도 있습니다. (URL에 .xsd 확장자를 추가했는데 XMLSchema.xsd 전체를 다운로드하여 유효성을 검사하려고했지만 아주 똑같은 동작 = – Metafaniel

+0

@shelter 오류를 발견했습니다! = D 문제가 내 XSD에 있습니다. 방금'type = "dateTime"'을 썼지 만'type = "xsd : dateTime"' 어쨌든 고마워 ... NOW 무엇을? U__U XML을 구문 분석했습니다. 어떻게 사용할 수 있습니까? = ( – Metafaniel