Examples of XPath-Based Anonymization Rules
This section includes examples of commonly used XPath-based anonymization rules.
Example 1: Rule with nested XML structure
Rule definition example:
{
"name": "NESTED_XPATH_RULE",
"rule_id": "XPATH",
"paths": ["/configs/properties/passwd"],
"include_files": ["*config.xml"],
"shared": true
}Input data:
<?xml version="1.0" encoding="UTF-8" ?>
<configs>
<properties>
<user>abc</user>
<passwd>1234</passwd>
</properties>
</configs>Output data (after anonymization):
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<configs>
<properties>
<user>abc</user>
<passwd>¶9165¶</passwd>
</properties>
</configs>Example 2: Rule with XML array structure
Rule definition example:
{
"name": "ARRAY_XPATH_RULE",
"rule_id": "XPATH",
"paths": ["/configs/properties[2]/passwd"],
"include_files": ["*config.xml"],
"shared": true
}Input data:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<configs>
<properties>
<database>mysql</database>
<url>user@host:port</url>
</properties>
<properties>
<user>abc</user>
<passwd>1234</passwd>
</properties>
</configs>Output data (after anonymization):
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<configs>
<properties>
<database>mysql</database>
<url>user@host:port</url>
</properties>
<properties>
<user>abc</user>
<passwd>¶9165¶</passwd>
</properties>
</configs>Example 3: Rule with XML map structure
Rule definition example:
{
"name": "MAP_XPATH_RULE",
"rule_id": "XPATH",
"paths": ["/configs/properties/passwd"],
"include_files": ["*config.xml"],
"shared": true
}Input data:
<?xml version="1.0" encoding="UTF-8" ?>
<configs>
<db>mysql</db>
<properties>
<user_name>sa</user_name>
<passwd>sa_pass</passwd>
</properties>
<pooli_size>32</pooli_size>
<timeout>10</timeout>
</configs>Output data (after anonymization):
<?xml version="1.0" encoding="UTF-8" standalone="no"?><configs>
<db>mysql</db>
<properties>
<user_name>sa</user_name>
<passwd>¶vm_wtto¶</passwd>
</properties>
<pooli_size>32</pooli_size>
<timeout>10</timeout>
</configs>Example 4: Rule to mask all array elements
Rule definition example:
{
"name": "ALL_FROM_ARRAY_XPATH_RULE",
"rule_id": "XPATH",
"paths": ["/configs/properties[*]/passwd"],
"include_files": ["*config.xml"],
"shared": true
}Input data:
<?xml version="1.0" encoding="UTF-8" ?>
<configs>
<properties>
<user>abc1</user>
<passwd>pass1</passwd>
</properties>
<properties>
<user>abc2</user>
<passwd>pass2</passwd>
</properties>
</configs>Output data (after anonymization):
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<configs>
<properties>
<user>abc1</user>
<passwd>¶smfz7¶</passwd>
</properties>
<properties>
<user>abc2</user>
<passwd>¶smfz8¶</passwd>
</properties>
</configs>Example 5: Rule to mask some array elements which have passwd
Rule definition example:
{
"name": "SOME_FROM_ARRAY_XPATH_RULE",
"rule_id": "XPATH",
"paths": ["/configs/properties[passwd]/passwd"],
"include_files": ["*config.xml"],
"shared": true
}Input data:
<?xml version="1.0" encoding="UTF-8" ?>
<configs>
<properties>
<user>abc1</user>
<passwd1>pass1</passwd1>
</properties>
<properties>
<user>abc2</user>
<passwd2>pass2</passwd2>
</properties>
<properties>
<user>abc3</user>
<passwd>pass3</passwd>
</properties>
</configs>Output data (after anonymization):
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<configs>
<properties>
<user>abc1</user>
<passwd1>pass1</passwd1>
</properties>
<properties>
<user>abc2</user>
<passwd2>pass2</passwd2>
</properties>
<properties>
<user>abc3</user>
<passwd>¶smfz9¶</passwd>
</properties>
</configs>
