2011-12-21 5 views
0

У нас есть проект Java, который использует JSF. По нашему мнению, мы не использовали id s во всех наших файлах XHTML. То, что я хочу сделать, это разобрать XHTML файлы и проверить теги, какКак разобрать стиль JSF XHTML

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

Постоянная часть <h:input...> Остальное может быть что угодно, как <h:inputSecret<h:inputWHATELSE после выбора правильного тега. Я хочу проверить, есть ли атрибут id этого тега. Если нет, я хочу добавить к нему id.

Here является одним из наших файлов XHTML.

Я попытался выполнить работу с Python. Я попробовал ElementTree, piksemel и BeautifulSoup. Любая помощь по этому вопросу будет оценена по достоинству.

+0

btw i did sth. без разбора xml. Я сделал поиск регулярных выражений, чтобы соответствовать соответствующему шаблону. в http://dpaste.com/676169/ – rkirmizi

+0

Какое значение вы хотите присвоить атрибуту id? – PaulMcG

ответ

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 определен или нет и при необходимости назначить новое значение.

+0

Спасибо, очень. Это именно то, что мне нужно. :) – rkirmizi

+0

@rkirmizi Тогда, пожалуйста, отметьте ответ как принятый. – jcollado