Image::ExifTool::TagInfoXML(3) User Contributed Perl Documentation Image::ExifTool::TagInfoXML(3)

# [NAME](#NAME)

Image::ExifTool::TagInfoXML - Read/write tag information XML database

# [DESCRIPTION](#DESCRIPTION)

This module is used to generate an XML database from all ExifTool tag information. The XML database may then be edited and used to re-generate the language modules (Image::ExifTool::Lang::\*).

# [METHODS](#METHODS)

## [Write](#Write)

Print complete tag information database in XML format.

```
  # save list of all tags
  $success = Image::ExifTool::TagInfoXML::Write('dst.xml');
  # list all IPTC tags to console, including Flags
  Image::ExifTool::TagInfoXML::Write(undef, 'IPTC', Flags => 1);
  # write all EXIF Camera tags to file
  Image::ExifTool::TagInfoXML::Write($outfile, 'exif:camera');
```

[Inputs:](#Inputs:)

0\) \[optional] Output file name, or undef for console output. Output file will be overwritten if it already exists.

1\) \[optional] String of group names separated by colons to specify the group to print. A specific IFD may not be given as a group, since EXIF tags may be written to any IFD. Saves all groups if not specified.

2\) \[optional] Hash of options values:

```
    Flags   - Set to output 'flags' attribute
    NoDesc  - Set to suppress output of descriptions
    Lang    - Select a single language for output
    
```

[Return Value:](#Return)

True on success.

[Sample XML Output:](#Sample)

```
  <?xml version='1.0' encoding='UTF-8'?>
  <taginfo>
  <table name='XMP::dc' g0='XMP' g1='XMP-dc' g2='Other'>
   <desc lang='en'>XMP Dublin Core</desc>
   <tag id='title' name='Title' type='lang-alt' writable='true' g2='Image'>
    <desc lang='en'>Title</desc>
    <desc lang='de'>Titel</desc>
    <desc lang='fr'>Titre</desc>
   </tag>
   ...
  </table>
  </taginfo>
```

Flags (if selected and available) are formatted as a comma-separated list of the following possible values: Avoid, Binary, List, Mandatory, Permanent, Protected, Unknown and Unsafe. See the tag name documentation and lib/Image/ExifTool/README for a description of these flags. For XMP List tags, the list type (Alt, Bag or Seq) is also output as a flag if applicable.

## [BuildLangModules](#BuildLangModules)

Build all Image::ExifTool::Lang modules from an XML database file.

```
    Image::ExifTool::TagInfoXML::BuildLangModules('src.xml');
```

[Inputs:](#Inputs:~2)

0\) XML file name

1\) Update flags:

```
    0x01 = preserve version numbers
    0x02 = update all modules, even if they didn't change
    0x04 = update from scratch, ignoring existing definitions
    0x08 = override existing different descriptions and values
    
```

[Return Value:](#Return~2)

Number of modules updated, or negative on error.

# [AUTHOR](#AUTHOR)

Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

# [SEE ALSO](#SEE_ALSO)

[**Image::ExifTool**(3pm)](/man/os/exiftool/Image::ExifTool.3pm), [**Image::ExifTool::TagNames**(3pm)](/man/os/exiftool/Image::ExifTool::TagNames.3pm)

2026-10-09 perl v5.44.0

---

Document: Image::ExifTool::TagInfoXML(3pm) from exiftool 13.59-r3 (Chainguard OS)
Source: https://github.com/exiftool/exiftool
