我是 python 和 XML 的新手。我需要從 XML 檔案中洗掉 UserName 和他所有相應的 FeatureId。我嘗試使用 xml.etree.ElementTree 但無法洗掉 FeatureIds。任何幫助將不勝感激。
示例 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>[email protected]</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>[email protected]</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>[email protected]</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>[email protected]</UserName>
<FeatureList>
<FeatureDetail>
<FeatureId>7</FeatureId>
</FeatureDetail>
</FeatureList>
</FeatureEntitlementDetail>
</EnabledFeatureListForUsers>
</CovRDMData>
</BusinessRule>
例如,我想洗掉 UserName raj 和他從 0 到 6 的所有 FeatureId。提前致謝。
uj5u.com熱心網友回復:
您可以使用beautifulsoup. 檔案
- 首先選擇
<UserName>with 文本(在本例中為 Raj。)。 - 找到它的父級,即
<FeatureEntitlementDetail>使用.findParent()方法。 - 現在洗掉
<FeatureEntitlementDetail>將洗掉用戶名 Raj 的整個樹。你可以使用.decompose()
這是完整的代碼。
import requests
from bs4 import BeautifulSoup
s = """<YOUR XML GOES HERE>"""
soup = BeautifulSoup(s, 'xml')
u = soup.find('UserName', text='[email protected]')
fed = u.findParent()
fed.decompose()
print(soup.prettify())
您可以看到沒有<UserName>Raj 并且<FeatureIds>通過列印soup.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/363073.html
