Извлечь метаданные / столбец XML из изображений jpeg2000, используя vbscript/VBA
У меня есть процедуры, которые собирают и анализируют данные файлов / папок в отношении содержимого базы данных - система существует и работает хорошо в течение многих лет. Эти подпрограммы используют vbscript/AccessVBA для сбора информации о файле и подготовки / загрузки записей на базу данных SQL-сервера. В настоящее время я не храню файловые потоки на SQL-сервере, только их пути и данные о файлах. Теперь мне нужно извлечь метаданные XML из некоторых из этих файлов, с которыми мне не приходилось работать.
Файлы JPEG2000 получены из TIFF. Они генерируются с помощью пакета, а метаданные из оригинальных TIFF добавляются в JP2. Я могу увидеть XML с помощью JP2 Meta Editor:
XML выглядит так:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Originating Facility -->
<TIFF>
<METADATA>
<FILENAME>L145Y1921I001S0005.tif</FILENAME>
<SEPARATOR>\</SEPARATOR>
<PARENT>I:\Processing_Unit\L145\Box127</PARENT>
<CANONICALPATH>I:\Processing_Unit\L145\Box127\L145Y1921I001S0005.tif</CANONICALPATH>
<ABSOLUTEPATH>I:\Processing_Unit\L145\Box127\L145Y1921I001S0005.tif</ABSOLUTEPATH>
<PATH>I:\Processing_Unit\L145\Box127\L145Y1921I001S0005.tif</PATH>
<FILE>true</FILE>
<DIRECTORY>false</DIRECTORY>
<FILELENGTH>18462952</FILELENGTH>
<HIDDEN>false</HIDDEN>
<ABSOLUTE>true</ABSOLUTE>
<URL>file:/I:/Processing_Unit/L145/Box127/L145Y1921I001S0005.tif</URL>
<URI>file:/I:/Processing_Unit/L145/Box127/L145Y1921I001S0005.tif</URI>
<READ>true</READ>
<WRITE>true</WRITE>
<EXTENSION>tif</EXTENSION>
<MODIFIED>2009-04-02 11:17:31</MODIFIED>
<DATE>20090402</DATE>
<DATEPATTERN>yyyyMMdd</DATEPATTERN>
<TIME>111731987</TIME>
<TIMEPATTERN>HHmmssSSS</TIMEPATTERN>
<TYPE>image/tiff</TYPE>
<PID>null</PID>
<OID>null</OID>
<FID>null</FID>
<PROCESSOR>unknown</PROCESSOR>
</METADATA>
<HEADER>
<LITTLEENDIAN>true</LITTLEENDIAN>
<VERSION>1.0</VERSION>
</HEADER>
<IMAGEFILEDIRECTORY>
<ELEMENT>
<NAME>NewSubfileType</NAME>
<TAG>254</TAG>
<LENGTH>1</LENGTH>
<TYPE>4</TYPE>
<VALUE>0</VALUE>
</ELEMENT>
<ELEMENT>
<NAME>ImageWidth</NAME>
<TAG>256</TAG>
<LENGTH>1</LENGTH>
<TYPE>3</TYPE>
<VALUE>2705</VALUE>
</ELEMENT>
<ELEMENT>
<NAME>ImageLength</NAME>
<TAG>257</TAG>
<LENGTH>1</LENGTH>
<TYPE>3</TYPE>
<VALUE>2275</VALUE>
</ELEMENT>
<ELEMENT>
<NAME>BitsPerSample</NAME>
<TAG>258</TAG>
<LENGTH>3</LENGTH>
<TYPE>3</TYPE>
<VALUE>8</VALUE>
<VALUE>8</VALUE>
<VALUE>8</VALUE>
</ELEMENT>
<ELEMENT>
<NAME>Compression</NAME>
<TAG>259</TAG>
<LENGTH>1</LENGTH>
<TYPE>3</TYPE>
<VALUE>1</VALUE>
</ELEMENT>
<ELEMENT>
<NAME>PhotometricInterpretation</NAME>
<TAG>262</TAG>
<LENGTH>1</LENGTH>
<TYPE>3</TYPE>
<VALUE>2</VALUE>
</ELEMENT>
<ELEMENT>
<NAME>DocumentName</NAME>
<TAG>269</TAG>
<LENGTH>22</LENGTH>
<TYPE>2</TYPE>
<VALUE>L145Y1921I001S0005.tif</VALUE>
</ELEMENT>
<ELEMENT>
<NAME>ImageDescription</NAME>
<TAG>270</TAG>
<LENGTH>6</LENGTH>
<TYPE>2</TYPE>
<VALUE>paper</VALUE>
</ELEMENT>
<ELEMENT>
<NAME>Make</NAME>
<TAG>271</TAG>
<LENGTH>10</LENGTH>
<TYPE>2</TYPE>
<VALUE>Phase One</VALUE>
</ELEMENT>
<ELEMENT>
<NAME>Model</NAME>
<TAG>272</TAG>
<LENGTH>6</LENGTH>
<TYPE>2</TYPE>
<VALUE>P 30+</VALUE>
</ELEMENT>
<ELEMENT>
<NAME>Orientation</NAME>
<TAG>274</TAG>
<LENGTH>1</LENGTH>
<TYPE>3</TYPE>
<VALUE>1</VALUE>
</ELEMENT>
<ELEMENT>
<NAME>SamplesPerPixel</NAME>
<TAG>277</TAG>
<LENGTH>1</LENGTH>
<TYPE>3</TYPE>
<VALUE>3</VALUE>
</ELEMENT>
<ELEMENT>
<NAME>RowsPerStrip</NAME>
<TAG>278</TAG>
<LENGTH>1</LENGTH>
<TYPE>3</TYPE>
<VALUE>2275</VALUE>
</ELEMENT>
<ELEMENT>
<NAME>XResolution</NAME>
<TAG>282</TAG>
<LENGTH>1</LENGTH>
<TYPE>5</TYPE>
<VALUE>300.0</VALUE>
</ELEMENT>
<ELEMENT>
<NAME>YResolution</NAME>
<TAG>283</TAG>
<LENGTH>1</LENGTH>
<TYPE>5</TYPE>
<VALUE>300.0</VALUE>
</ELEMENT>
<ELEMENT>
<NAME>PlanarConfiguration</NAME>
<TAG>284</TAG>
<LENGTH>1</LENGTH>
<TYPE>3</TYPE>
<VALUE>1</VALUE>
</ELEMENT>
<ELEMENT>
<NAME>ResolutionUnit</NAME>
<TAG>296</TAG>
<LENGTH>1</LENGTH>
<TYPE>3</TYPE>
<VALUE>2</VALUE>
</ELEMENT>
<ELEMENT>
<NAME>Software</NAME>
<TAG>305</TAG>
<LENGTH>51</LENGTH>
<TYPE>2</TYPE>
<VALUE>Capture One 4 Windows; Adobe Photoshop CS3 Windows</VALUE>
</ELEMENT>
<ELEMENT>
<NAME>DateTime</NAME>
<TAG>306</TAG>
<LENGTH>20</LENGTH>
<TYPE>2</TYPE>
<VALUE>2009:03:26 11:23:36</VALUE>
</ELEMENT>
<ELEMENT>
<NAME>Artist</NAME>
<TAG>315</TAG>
<LENGTH>33</LENGTH>
<TYPE>2</TYPE>
<VALUE>Preservation Center</VALUE>
</ELEMENT>
<ELEMENT>
<NAME>Custom</NAME>
<TAG>34665</TAG>
<LENGTH>1</LENGTH>
<TYPE>4</TYPE>
<VALUE>null</VALUE>
</ELEMENT>
<ELEMENT>
<NAME>Custom</NAME>
<TAG>34675</TAG>
<LENGTH>560</LENGTH>
<TYPE>7</TYPE>
<VALUE>null</VALUE>
</ELEMENT>
</IMAGEFILEDIRECTORY>
</TIFF>
Мне нужно извлечь исходное имя документа - родительское имя TIFF - из каждого из этих файлов JP2.
Есть ли простой способ включить это в существующую процедуру сбора файлов, используя VBA/VBscript? Мне нужно будет иметь возможность обрабатывать сотни тысяч существующих файловых записей, чтобы получить это новое дополнительное значение, а также включить это извлечение в сканирование папок в будущем.
Заранее спасибо.