问题陈述:
鉴于下面给出的 xml,我想编写一个简单的脚本来生成(http)www.herp.com/和(http)www.herp.com/derp。可以想象,对于我遇到的每条应用程序路径。也就是说,如果我有更多,例如:<application path = "wassup" applicationPool="derp />
,我也想要(http)www.herp.com/wassup。
<sites>
<site name="(http)www.herp.com" id="1" serverAutoStart="true">
<application path="/" applicationPool="derp_administration">
<virtualDirectory path="/" physicalPath="D:\inetpub\herp_webs\derp" />
<virtualDirectory path="/Controls" physicalPath="D:\inetpub\usercontrolslibnew_ent" />
</application>
<application path="/derp" applicationPool="BOOGA">
<virtualDirectory path="/" physicalPath="D:\inetpub\herp_webs\derp" />
<virtualDirectory path="/Controls" physicalPath="D:\inetpub\usercontrolslibnew" />
</application>
</site>
</sites>
尝试的解决方案:
我正在使用以下代码:
import xml.etree.ElementTree as ET
tree = ET.parse("applicationHost.config")
root = tree.getroot()
sites = root.iter('site')
for site in sites:
print site.get('name')
但是,这显然只会给我:
(http) www.herp.com
我无法在属性中看到任何指向我的东西<application path = "i want this stuff" />
我尝试使用 site.tag、site.text、site.attrib 和 site.tail,但这些都不能帮助我查看构建 url 的应用程序路径。如何解析此 xml 代码以提供名称和路径属性?
因此,鉴于这里的出色建议。我尝试了以下代码:
sites = root.iter('site')
for site in sites:
apps = site.findall('application')
print apps.tag, apps.attrib
我收到以下错误。
AttributeError: 'list' object has no attribute 'attrib'
标签也有类似的错误。基本上,如果我使用site.find('application')
它会给我第一个<application path ="/" applicationPool="whatever"/>
,但我找不到它下面的其余部分。对不起。显然,我运行它的这个特定配置具有我不知道的网站依赖关系。我是新来的工作。
研究来源:
- RTFM:https ://docs.python.org/2/library/xml.etree.elementtree.html
- http://luisartola.com/software/2010/easy-xml-in-python/
- 谷歌/这里
注意: 我有多个 *.config 文件,使用脚本进行解析是可行的方法。我知道一些 GUI 工具可以做基本的事情,但在这里不合适。