Скрипт для анализа XML и загрузки файла с определенного URL, а затем передачи его на другой компьютер - PullRequest
1 голос
/ 08 февраля 2012

Уважаемые Stackoverflowers:

Мне нужна ваша любезная помощь для выполнения следующей задачи: мне нужен главный компьютер, чтобы я мог загрузить предопределенный файл XML и затем проанализировать его;с доступной информацией скрипт должен идентифицировать правильный файл, который будет периодически загружаться с веб-сервера.Наконец, этот файл должен быть передан на другой компьютер без доступа в Интернет в той же локальной сети и распакован в указанное место.Однако у меня есть ограничения: я не могу использовать PHP для этого, потому что я не могу ничего там установить;Я предложил сделать это с помощью сумм MD5, но необходимо указать определенный день и час, чтобы иметь возможность загрузить файл на главный компьютер, и еще час и день, чтобы передать его на тонкий терминал.

I 'объясню потом спрошу.Спасибо!

Я разработал этот 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. После загрузки надежно скопируйте его на нужный терминал в локальной сети
  4. Проверьте, доступен ли более новый XML, и загрузите его (процесс cron?)

Как вы думаете, это правильно?Если так, то теперь, когда мой XML-код действителен, СЕЙЧАС ЧТО ???= '/ Как я могу использовать это информация ??Я новичок в XMLlint и XPath.Что я могу сделать сейчас ???

Большое спасибо.

1 Ответ

0 голосов
/ 08 февраля 2012

Я не могу помочь со всем этим, но вы найдете dateTime в

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

редактировать

я хочу сказать, что в вашем документе указано

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

, который является существующим документом, НО не является настоящим файлом .xsd и не будет проверять любой ваш XML.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...