如何解析JSF样式的XHTML

时间:2011-12-21 08:57:30

标签: python xml parsing jsf xhtml

我们有一个使用JSF的Java项目。在我们的视图层中,我们在所有XHTML文件中都没有使用id。我想要做的是解析XHTML文件并检查像

这样的标签
<h:inputText id="username" value="#{identity.username}"/>

常数部分是<h:input...&gt; 选择正确的标签后,其余部分可以是<h:inputSecret <h:inputWHATELSE。我想检查该标记是否有id属性。如果没有,我想为其添加id

Here是我们的XHTML文件之一。

我尝试用Python做这项工作。我尝试过ElementTree,piksemel和BeautifulSoup。任何有关此问题的帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

使用Beautifulsoup,你可以这样做:

from BeautifulSoup import BeautifulSoup
import re

soup = BeautifulSoup(<your_xml_here>)
nodes = soup.findAll(name=re.compile('^h:input'))
for node in nodes:
    if 'id' not in dict(node.attrs):
        node['id'] = <whatever you need>

可以看出,要获得所有与您正在寻找的名称模式匹配的节点,您需要的是正则表达式。之后,您可以检查节点属性以确定是否定义了id并在需要时分配新值。