michal.jakubeczy:
Eu tenho um HTML seguinte
<data-my-tag>
<data-another-tag>
... content ...
</data-another-tag>
<data-my-tag>
... content ...
</data-my-tag>
</data-my-tag>
Agora eu preciso encontrar todas as tags começando com prefixo <data-
. Eu preciso encontrar seus nomes e também seu conteúdo. Eu sei que isto não é possível de alcançar com regex, então eu comecei a trabalhar com javax.xml.parsers
. É fácil para mim encontrar algumas tags de acordo com um determinado nome, mas eu sou incapaz de encontrar marcas que começam com alguns prefixo.
O que é a expressão ou código para encontrar as tags começando com prefixo?
VGR:
Você pode usar o XPath starts-com função:
public void findElements(InputSource source,
String prefix) {
try {
XPath xpath = XPathFactory.newInstance().newXPath();
NodeList matches = (NodeList) xpath.evaluate(
"//*[starts-with(local-name(), '" + prefix + "')]",
source, XPathConstants.NODESET);
int count = matches.getLength();
for (int i = 0; i < count; i++) {
Node match = matches.item(i);
System.out.println("Element: " + match.getNodeName());
System.out.println("Text: " + match.getTextContent().trim());
System.out.println();
}
} catch (XPathException e) {
throw new RuntimeException(e);
}
}