如何解析JSF风格的XHTML

0 投票
1 回答
859 浏览
提问于 2025-04-17 08:45

我们有一个使用JSF的Java项目。在我们的视图层中,并没有在所有的XHTML文件里使用id属性。我想做的是解析这些XHTML文件,检查里面是否有特定的标签。

<h:inputText id="username" value="#{identity.username}"/>

这个标签的固定部分是<h:input...,后面的内容可以是任何东西,比如<h:inputSecret或者<h:inputWHATELSE,只要选择到正确的标签。我想检查一下这个标签是否有id属性。如果没有的话,我想给它加上一个id

这里是我们其中一个XHTML文件的例子。

我尝试用Python来完成这个工作。我试过ElementTree、piksemel和BeautifulSoup这些工具。对于这个问题,任何帮助都非常感谢。

1 个回答

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是否被定义,如果需要的话,可以给它赋一个新值。

撰写回答