使用 python 更新 XML 文件 - 添加新的 UserName 和 FeatureIds
Update XML file with python - add new UserName and FeatureIds
我是 python 和 XML 的新手。我需要将 UserName 及其所有相应的 FeatureId 添加到 XML 文件中。任何帮助将不胜感激。例如,我想添加用户名 john@abc.com 和他的 FeatureIds 3,5,6。它可以是用户列表中的任何位置,即开头或中间或末尾,但结构与其他用户名相同。提前致谢。
样本XML:
<?xml version="1.0" encoding="utf-8"?>
<BusinessRule>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<CovRDMMetaData>
<Config>
<Type>Business Rule</Type>
<Category>Device</Category>
</Config>
<Properties>
<PropertyInfo>
<Rule>
<Name>FeatureEntitlementDetails</Name>
<Path>Rules\FeatureEntitlementDetails.xml</Path>
<Version>4.0.12</Version>
</Rule>
<Target>
<ClientName>Money Exchange Client</ClientName>
<ClientVersion>7.8.7</ClientVersion>
<DeviceType>Money AP15</DeviceType>
</Target>
</PropertyInfo>
</Properties>
</CovRDMMetaData>
<CovRDMData>
<SetFeatureRetirement>
<IsRetired>No</IsRetired>
<MessageIfRetired>Please upgrade ROLEX client to use Set Feature option</MessageIfRetired>
</SetFeatureRetirement>
<EnabledFeatureListForUsers>
<FeatureEntitlementDetail>
<UserName>raj@abc.com</UserName>
<FeatureList>
<FeatureDetail>
<FeatureId>0</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>1</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>2</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>3</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>4</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>5</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>6</FeatureId>
</FeatureDetail>
</FeatureList>
</FeatureEntitlementDetail>
<FeatureEntitlementDetail>
<UserName>mana@abc.com</UserName>
<FeatureList>
<FeatureDetail>
<FeatureId>0</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>1</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>2</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>3</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>4</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>5</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>6</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>7</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>8</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>9</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>10</FeatureId>
</FeatureDetail>
</FeatureList>
</FeatureEntitlementDetail>
<FeatureEntitlementDetail>
<UserName>thomas@abc.com</UserName>
<FeatureList>
<FeatureDetail>
<FeatureId>0</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>1</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>2</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>3</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>4</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>5</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>6</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>7</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>8</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>9</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>10</FeatureId>
</FeatureDetail>
</FeatureList>
</FeatureEntitlementDetail>
<FeatureEntitlementDetail>
<UserName>anyka@abc.com</UserName>
<FeatureList>
<FeatureDetail>
<FeatureId>7</FeatureId>
</FeatureDetail>
</FeatureList>
</FeatureEntitlementDetail>
</EnabledFeatureListForUsers>
</CovRDMData>
</BusinessRule>
预期输出:
<?xml version="1.0" encoding="utf-8"?>
<BusinessRule>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<CovRDMMetaData>
<Config>
<Type>Business Rule</Type>
<Category>Device</Category>
</Config>
<Properties>
<PropertyInfo>
<Rule>
<Name>FeatureEntitlementDetails</Name>
<Path>Rules\FeatureEntitlementDetails.xml</Path>
<Version>4.0.12</Version>
</Rule>
<Target>
<ClientName>Money Exchange Client</ClientName>
<ClientVersion>7.8.7</ClientVersion>
<DeviceType>Money AP15</DeviceType>
</Target>
</PropertyInfo>
</Properties>
</CovRDMMetaData>
<CovRDMData>
<SetFeatureRetirement>
<IsRetired>No</IsRetired>
<MessageIfRetired>Please upgrade ROLEX client to use Set Feature option</MessageIfRetired>
</SetFeatureRetirement>
<EnabledFeatureListForUsers>
***
<FeatureEntitlementDetail>
<UserName>john@abc.com</UserName>
<FeatureList>
<FeatureDetail>
<FeatureId>3</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>5</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>6</FeatureId>
</FeatureDetail>
</FeatureList>
</FeatureEntitlementDetail>
***
<FeatureEntitlementDetail>
<UserName>raj@abc.com</UserName>
<FeatureList>
<FeatureDetail>
<FeatureId>0</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>1</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>2</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>3</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>4</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>5</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>6</FeatureId>
</FeatureDetail>
</FeatureList>
</FeatureEntitlementDetail>
<FeatureEntitlementDetail>
<UserName>mana@abc.com</UserName>
<FeatureList>
<FeatureDetail>
<FeatureId>0</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>1</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>2</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>3</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>4</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>5</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>6</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>7</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>8</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>9</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>10</FeatureId>
</FeatureDetail>
</FeatureList>
</FeatureEntitlementDetail>
<FeatureEntitlementDetail>
<UserName>thomas@abc.com</UserName>
<FeatureList>
<FeatureDetail>
<FeatureId>0</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>1</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>2</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>3</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>4</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>5</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>6</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>7</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>8</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>9</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>10</FeatureId>
</FeatureDetail>
</FeatureList>
</FeatureEntitlementDetail>
<FeatureEntitlementDetail>
<UserName>anyka@abc.com</UserName>
<FeatureList>
<FeatureDetail>
<FeatureId>7</FeatureId>
</FeatureDetail>
</FeatureList>
</FeatureEntitlementDetail>
</EnabledFeatureListForUsers>
</CovRDMData>
</BusinessRule>
我在开始和结束处添加了 ***,我需要添加新的 UserName 和他的 FeatureIds
提前致谢
见下文。 (想法是创建一个新的 FeatureEntitlementDetail
,填充它并将其附加到正确位置的文档。)
import xml.etree.ElementTree as ET
xml = '''<?xml version="1.0" encoding="utf-8"?>
<BusinessRule>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<CovRDMMetaData>
<Config>
<Type>Business Rule</Type>
<Category>Device</Category>
</Config>
<Properties>
<PropertyInfo>
<Rule>
<Name>FeatureEntitlementDetails</Name>
<Path>Rules\FeatureEntitlementDetails.xml</Path>
<Version>4.0.12</Version>
</Rule>
<Target>
<ClientName>Money Exchange Client</ClientName>
<ClientVersion>7.8.7</ClientVersion>
<DeviceType>Money AP15</DeviceType>
</Target>
</PropertyInfo>
</Properties>
</CovRDMMetaData>
<CovRDMData>
<SetFeatureRetirement>
<IsRetired>No</IsRetired>
<MessageIfRetired>Please upgrade ROLEX client to use Set Feature option</MessageIfRetired>
</SetFeatureRetirement>
<EnabledFeatureListForUsers>
<FeatureEntitlementDetail>
<UserName>raj@abc.com</UserName>
<FeatureList>
<FeatureDetail>
<FeatureId>0</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>1</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>2</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>3</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>4</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>5</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>6</FeatureId>
</FeatureDetail>
</FeatureList>
</FeatureEntitlementDetail>
<FeatureEntitlementDetail>
<UserName>mana@abc.com</UserName>
<FeatureList>
<FeatureDetail>
<FeatureId>0</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>1</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>2</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>3</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>4</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>5</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>6</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>7</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>8</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>9</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>10</FeatureId>
</FeatureDetail>
</FeatureList>
</FeatureEntitlementDetail>
<FeatureEntitlementDetail>
<UserName>thomas@abc.com</UserName>
<FeatureList>
<FeatureDetail>
<FeatureId>0</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>1</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>2</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>3</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>4</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>5</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>6</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>7</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>8</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>9</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>10</FeatureId>
</FeatureDetail>
</FeatureList>
</FeatureEntitlementDetail>
<FeatureEntitlementDetail>
<UserName>anyka@abc.com</UserName>
<FeatureList>
<FeatureDetail>
<FeatureId>7</FeatureId>
</FeatureDetail>
</FeatureList>
</FeatureEntitlementDetail>
</EnabledFeatureListForUsers>
</CovRDMData>
</BusinessRule>'''
root = ET.fromstring(xml)
data = {'UserName':'john@abc.com','Features':[3,5,6]}
details = ET.Element("FeatureEntitlementDetail")
user_name = ET.SubElement(details,'UserName')
user_name.text = data['UserName']
feature_list = ET.SubElement(details,'FeatureList')
for f in data['Features']:
ele = ET.SubElement(feature_list,'FeatureDetail')
sub_ele = ET.SubElement(ele,'FeatureId')
sub_ele.text = str(f)
root.find('.//EnabledFeatureListForUsers').append(details)
ET.dump(root)
我是 python 和 XML 的新手。我需要将 UserName 及其所有相应的 FeatureId 添加到 XML 文件中。任何帮助将不胜感激。例如,我想添加用户名 john@abc.com 和他的 FeatureIds 3,5,6。它可以是用户列表中的任何位置,即开头或中间或末尾,但结构与其他用户名相同。提前致谢。
样本XML:
<?xml version="1.0" encoding="utf-8"?>
<BusinessRule>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<CovRDMMetaData>
<Config>
<Type>Business Rule</Type>
<Category>Device</Category>
</Config>
<Properties>
<PropertyInfo>
<Rule>
<Name>FeatureEntitlementDetails</Name>
<Path>Rules\FeatureEntitlementDetails.xml</Path>
<Version>4.0.12</Version>
</Rule>
<Target>
<ClientName>Money Exchange Client</ClientName>
<ClientVersion>7.8.7</ClientVersion>
<DeviceType>Money AP15</DeviceType>
</Target>
</PropertyInfo>
</Properties>
</CovRDMMetaData>
<CovRDMData>
<SetFeatureRetirement>
<IsRetired>No</IsRetired>
<MessageIfRetired>Please upgrade ROLEX client to use Set Feature option</MessageIfRetired>
</SetFeatureRetirement>
<EnabledFeatureListForUsers>
<FeatureEntitlementDetail>
<UserName>raj@abc.com</UserName>
<FeatureList>
<FeatureDetail>
<FeatureId>0</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>1</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>2</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>3</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>4</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>5</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>6</FeatureId>
</FeatureDetail>
</FeatureList>
</FeatureEntitlementDetail>
<FeatureEntitlementDetail>
<UserName>mana@abc.com</UserName>
<FeatureList>
<FeatureDetail>
<FeatureId>0</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>1</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>2</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>3</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>4</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>5</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>6</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>7</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>8</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>9</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>10</FeatureId>
</FeatureDetail>
</FeatureList>
</FeatureEntitlementDetail>
<FeatureEntitlementDetail>
<UserName>thomas@abc.com</UserName>
<FeatureList>
<FeatureDetail>
<FeatureId>0</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>1</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>2</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>3</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>4</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>5</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>6</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>7</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>8</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>9</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>10</FeatureId>
</FeatureDetail>
</FeatureList>
</FeatureEntitlementDetail>
<FeatureEntitlementDetail>
<UserName>anyka@abc.com</UserName>
<FeatureList>
<FeatureDetail>
<FeatureId>7</FeatureId>
</FeatureDetail>
</FeatureList>
</FeatureEntitlementDetail>
</EnabledFeatureListForUsers>
</CovRDMData>
</BusinessRule>
预期输出:
<?xml version="1.0" encoding="utf-8"?>
<BusinessRule>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<CovRDMMetaData>
<Config>
<Type>Business Rule</Type>
<Category>Device</Category>
</Config>
<Properties>
<PropertyInfo>
<Rule>
<Name>FeatureEntitlementDetails</Name>
<Path>Rules\FeatureEntitlementDetails.xml</Path>
<Version>4.0.12</Version>
</Rule>
<Target>
<ClientName>Money Exchange Client</ClientName>
<ClientVersion>7.8.7</ClientVersion>
<DeviceType>Money AP15</DeviceType>
</Target>
</PropertyInfo>
</Properties>
</CovRDMMetaData>
<CovRDMData>
<SetFeatureRetirement>
<IsRetired>No</IsRetired>
<MessageIfRetired>Please upgrade ROLEX client to use Set Feature option</MessageIfRetired>
</SetFeatureRetirement>
<EnabledFeatureListForUsers>
***
<FeatureEntitlementDetail>
<UserName>john@abc.com</UserName>
<FeatureList>
<FeatureDetail>
<FeatureId>3</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>5</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>6</FeatureId>
</FeatureDetail>
</FeatureList>
</FeatureEntitlementDetail>
***
<FeatureEntitlementDetail>
<UserName>raj@abc.com</UserName>
<FeatureList>
<FeatureDetail>
<FeatureId>0</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>1</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>2</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>3</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>4</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>5</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>6</FeatureId>
</FeatureDetail>
</FeatureList>
</FeatureEntitlementDetail>
<FeatureEntitlementDetail>
<UserName>mana@abc.com</UserName>
<FeatureList>
<FeatureDetail>
<FeatureId>0</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>1</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>2</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>3</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>4</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>5</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>6</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>7</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>8</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>9</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>10</FeatureId>
</FeatureDetail>
</FeatureList>
</FeatureEntitlementDetail>
<FeatureEntitlementDetail>
<UserName>thomas@abc.com</UserName>
<FeatureList>
<FeatureDetail>
<FeatureId>0</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>1</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>2</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>3</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>4</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>5</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>6</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>7</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>8</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>9</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>10</FeatureId>
</FeatureDetail>
</FeatureList>
</FeatureEntitlementDetail>
<FeatureEntitlementDetail>
<UserName>anyka@abc.com</UserName>
<FeatureList>
<FeatureDetail>
<FeatureId>7</FeatureId>
</FeatureDetail>
</FeatureList>
</FeatureEntitlementDetail>
</EnabledFeatureListForUsers>
</CovRDMData>
</BusinessRule>
我在开始和结束处添加了 ***,我需要添加新的 UserName 和他的 FeatureIds 提前致谢
见下文。 (想法是创建一个新的 FeatureEntitlementDetail
,填充它并将其附加到正确位置的文档。)
import xml.etree.ElementTree as ET
xml = '''<?xml version="1.0" encoding="utf-8"?>
<BusinessRule>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<CovRDMMetaData>
<Config>
<Type>Business Rule</Type>
<Category>Device</Category>
</Config>
<Properties>
<PropertyInfo>
<Rule>
<Name>FeatureEntitlementDetails</Name>
<Path>Rules\FeatureEntitlementDetails.xml</Path>
<Version>4.0.12</Version>
</Rule>
<Target>
<ClientName>Money Exchange Client</ClientName>
<ClientVersion>7.8.7</ClientVersion>
<DeviceType>Money AP15</DeviceType>
</Target>
</PropertyInfo>
</Properties>
</CovRDMMetaData>
<CovRDMData>
<SetFeatureRetirement>
<IsRetired>No</IsRetired>
<MessageIfRetired>Please upgrade ROLEX client to use Set Feature option</MessageIfRetired>
</SetFeatureRetirement>
<EnabledFeatureListForUsers>
<FeatureEntitlementDetail>
<UserName>raj@abc.com</UserName>
<FeatureList>
<FeatureDetail>
<FeatureId>0</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>1</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>2</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>3</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>4</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>5</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>6</FeatureId>
</FeatureDetail>
</FeatureList>
</FeatureEntitlementDetail>
<FeatureEntitlementDetail>
<UserName>mana@abc.com</UserName>
<FeatureList>
<FeatureDetail>
<FeatureId>0</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>1</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>2</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>3</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>4</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>5</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>6</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>7</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>8</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>9</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>10</FeatureId>
</FeatureDetail>
</FeatureList>
</FeatureEntitlementDetail>
<FeatureEntitlementDetail>
<UserName>thomas@abc.com</UserName>
<FeatureList>
<FeatureDetail>
<FeatureId>0</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>1</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>2</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>3</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>4</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>5</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>6</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>7</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>8</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>9</FeatureId>
</FeatureDetail>
<FeatureDetail>
<FeatureId>10</FeatureId>
</FeatureDetail>
</FeatureList>
</FeatureEntitlementDetail>
<FeatureEntitlementDetail>
<UserName>anyka@abc.com</UserName>
<FeatureList>
<FeatureDetail>
<FeatureId>7</FeatureId>
</FeatureDetail>
</FeatureList>
</FeatureEntitlementDetail>
</EnabledFeatureListForUsers>
</CovRDMData>
</BusinessRule>'''
root = ET.fromstring(xml)
data = {'UserName':'john@abc.com','Features':[3,5,6]}
details = ET.Element("FeatureEntitlementDetail")
user_name = ET.SubElement(details,'UserName')
user_name.text = data['UserName']
feature_list = ET.SubElement(details,'FeatureList')
for f in data['Features']:
ele = ET.SubElement(feature_list,'FeatureDetail')
sub_ele = ET.SubElement(ele,'FeatureId')
sub_ele.text = str(f)
root.find('.//EnabledFeatureListForUsers').append(details)
ET.dump(root)