HTML Agility Pack Fix <li> ordre de la liste

.net c# html html-agility-pack

Question

J'ai essayé d'utiliser HTML Agility Pack pour analyser HTML en XHTML valide afin de créer un fichier XML plus volumineux. Ceci fonctionne pour la plupart, mais les listes sont formatées comme suit:

<ul>
    <li>item1
    <li>item2
    </li></li>
</ul>

Comme opposé à ce que j'attendrais:

<ul>
    <li>item1
    <li>item2
    </li></li>
</ul>

Malheureusement, ce format avec des balises li imbriquées ne passe pas la validation du schéma sur laquelle je n’ai aucun contrôle. Est-ce que quelqu'un connaît un moyen simple de corriger cela, soit par le biais du Pack d'agilité HTML, soit par une alternative? De préférence en .NET.

Réponse acceptée

J'ai trouvé une alternative au pack d'agilité appelée HTML Tidy http://tidy.sourceforge.net/. J'ai en fait utilisé le port .NET appelé Tidy.NET http://sourceforge.net/projects/tidynet/. .


Réponse populaire

J'ai aussi trouvé votre question sur d'autres sites. Le code HTML que vous essayez d'analyser est le suivant:

<UL>
<LI>NVQ Level 3 in Fabrication and Welding Engineering
<LI>Level 3 Certificate in Engineering
<LI>Level&nbsp;2 Key Skill in Application of Number
<LI>Level&nbsp;2 Key Skill in Communication
<LI>Level&nbsp;2 Key Skill in Information Technology
<LI>Level 2 Key Skill in Working with Others
<LI>Level 2 Key Skill in Improving Own Learning &amp; Performance</LI></UL>

Ce que je remarque, c'est que le premier <li> est le parent des autres <li>'s . Une approche à laquelle je voudrais en venir consiste à prendre le premier <li> et le texte (c’est un TextNode pour HAP), à enregistrer les autres <li> enfants et à les supprimer en les insérant (en les formatant) après le nœud parent.
Vous pourriez avoir à prendre la manière récursive à cela. Voici un aperçu de ma solution pour une classe HTML Sanitizer: balises de bande HTML Agility Pack NE SONT PAS DANS LA LISTE BLANCHE




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi