2009-12-23 5 views
1

quand je html:Comment puis-je obtenir le contenu HTML <body>

<html> 
<head> 
</head> 
<body> 
text 
    <div> 
    text2 
    <div> 
    text3 
    </div> 
    </div> 
</body> 
</html> 

comment puis-je obtenir avec analyseur DOM dans le contenu JAVA du corps: text <div> text2 <div> text3 </div> </div> becasuse méthode getTextContent retour: texte texte2 text3. - donc sans tags.

C'est possible avec SAX, mais c'est aussi possible avec DOM?

+0

Quel analyseur DOM utilisez-vous? –

Répondre

1

Le getTextContent se comporte comme je l'espère - obtenir le contenu textural du fragment HTML. Pouvez-vous vérifier les documents API pour l'analyseur DOM et voir s'il existe une méthode similaire avec un nom comme getHtmlContent?

+0

Je suis d'accord; vous pouvez traiter le tout comme une chaîne et en utilisant String.indexOf (..) méthode subString (..) tout dans la balise body. – Samuh

1

Vous auriez besoin d'analyser le document dans un DOM et de sérialiser uniquement la partie du DOM que vous vouliez. En utilisant les interfaces de niveau 3 LS DOM vous pouvez serialise le XML externe d'un seul nœud avec: (. Par exemple, dans un StringBuffer)

LSSerializer serializer= implementation.createLSSerializer(); 
String html= serializer.writeToString(node); 

Pour obtenir le XML interne vous devez writeToString chaque nœud enfant à son tour .

Selon l'implémentation DOM que vous utilisez, il peut exister d'autres méthodes non standard. Il peut également y avoir des risques avec la sérialisation HTML en XML, si c'est ce que vous faites ... par exemple. un sérialiseur XML standard peut sortir une balise à fermeture automatique pour une balise vide, ce qui peut confondre les navigateurs analysant la sortie en HTML hérité.

+0

Qu'est-ce que 'implementation'? – schwiz

+1

@schwiz: une implémentation de l'interface DOM Level 3 DOMImplementationLS. Vous en auriez traditionnellement un de 'document.implementation' (' getImplementation' dans les liaisons Java). – bobince

+0

document.getImplementation renvoie une implémentation abstraite qui n'inclut pas createLSSerializer. Des conseils? J'utilise la librairie DOM niveau 3 incluse avec Android. http://developer.android.com/reference/org/w3c/dom/Document.html – schwiz

Questions connexes