Skip to content

XML Usage

Micci - Luiz Miccieli edited this page Jan 30, 2025 · 16 revisions

Configuration Example

In this example, we configure replacements for XML files, specifying the paths and placeholder details. Here’s a breakdown of the configuration structure and its elements:

YAML Configuration

steps:
  - kind: XmlHandler
    apiVersion: v1
    spec:
      - files:
          - pom.xml
        placeholders:
          - match: /project/groupId
            replace: templify.param.groupId
          - match: /project/artifactId
            replace: templify.test.replace.map.artifactId
          - match: /project/dependencies/dependency/scope[text()='test']
            replace: templify.replace.map.scopes
      - files:
          - xmls/generic_1.xml
        placeholders:
          - match: /note/heading
            replace: New Reminder
      - files:
          - xmls/complex/generic_2.xml
        placeholders:
          - match: /bookstore/book/author[text()='Kurt Cagle']
            replace: templify.kurtCagle
          - match: /bookstore/book/year[text()='2005']
            replace: templify.NewYear

Explanation of Key Sections

1. kind: XmlHandler

This defines the handler type as XmlHandler, specifying that the operations pertain to XML files.

2. apiVersion: v1

Indicates the version of the API for handling XML configurations. Ensure compatibility by matching the correct API version.

3. spec Section

The element in the spec array defines a set of files to be processed along with specific placeholders. Each spec item contains:

  • files: Specifies the XML files in which replacements will occur. The paths are relative to the root of the project.
  • placeholders: Defines the placeholder operations within each file, where:
    • match: Represents the XPath expression targeting the element or text to be replaced.
    • replace: Specifies the placeholder value that will substitute the matched content. This value can reference an item in the templify configuration, providing flexibility to customize the output.

Example Use Cases

pom.xml Replacements

The pom.xml file has several placeholders to automate common configurations:

  • /project/groupId: Replaces the project’s groupId with the value specified in templify.param.groupId.
  • /project/artifactId: Substitutes the artifactId with templify.test.replace.map.artifactId.
  • /project/dependencies/dependency/scope[text()='test']: Replaces the test scope with templify.replace.map.scopes.

Custom XML Files

  1. xmls/generic_1.xml:

    • /note/heading: Updates the heading element within a <note> tag to "New Reminder".
  2. xmls/complex/generic_2.xml:

    • /bookstore/book/author[text()='Kurt Cagle']: Replaces occurrences of "Kurt Cagle" in the author tag with the value from templify.kurtCagle.
    • /bookstore/book/year[text()='2005']: Changes the year from "2005" to the new value in templify.NewYear.

Example project

You can see this example working here

If you want to see a more "complex" example, look here