-
Notifications
You must be signed in to change notification settings - Fork 0
XML Usage
Micci - Luiz Miccieli edited this page Jan 30, 2025
·
16 revisions
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:
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
This defines the handler type as XmlHandler
, specifying that the operations pertain to XML files.
Indicates the version of the API for handling XML configurations. Ensure compatibility by matching the correct API version.
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 thetemplify
configuration, providing flexibility to customize the output.
-
The pom.xml
file has several placeholders to automate common configurations:
-
/project/groupId
: Replaces the project’sgroupId
with the value specified intemplify.param.groupId
. -
/project/artifactId
: Substitutes theartifactId
withtemplify.test.replace.map.artifactId
. -
/project/dependencies/dependency/scope[text()='test']
: Replaces the test scope withtemplify.replace.map.scopes
.
-
xmls/generic_1.xml
:-
/note/heading
: Updates theheading
element within a<note>
tag to"New Reminder"
.
-
-
xmls/complex/generic_2.xml
:-
/bookstore/book/author[text()='Kurt Cagle']
: Replaces occurrences of"Kurt Cagle"
in theauthor
tag with the value fromtemplify.kurtCagle
. -
/bookstore/book/year[text()='2005']
: Changes theyear
from"2005"
to the new value intemplify.NewYear
.
-
You can see this example working here
If you want to see a more "complex" example, look here