使用vbscript / VBA从jpeg2000图像中提取XML元数据/列

时间:2017-09-05 21:05:36

标签: xml vbscript access-vba jpeg2000

我有收集和分析与数据库内容相关的文件/文件夹数据的例程 - 系统已经存在并且运行良好多年。这些例程使用vbscript / AccessVBA来收集文件信息并准备/加载记录到SQL Server db。我目前没有将文件流存储在SQL服务器中,只是它们的路径和有关文件的数据。现在我需要从其中一些文件中提取XML元数据,这是我不得不使用的。

文件是从TIFF派生的JPEG2000。它们是通过批处理生成的,原始TIFF中的元数据被添加到JP2中。我可以使用JP2 Meta Editor看到XML:

j2k tool

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>

我需要从每个JP2文件中提取原始文档名称 - 父TIFF名称。

使用VBA / VBscript有没有直接的方法将其合并到现有的文件收集例程中?我需要能够处理数十万个现有文件记录以获得这个新的附加值,并将此提取包括在文件夹扫描中。

提前致谢。

0 个答案:

没有答案