Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Elements par Id dans un XHTML

2 réponses
Avatar
Gloops
Bonjour tout le monde,

Afin d'=E9tablir un rapprochement entre les =E9l=E9ments de deux document=
s=20
portant les m=EAmes attributs id, je parcours le premier dans un=20
XmlDataDocument, et je cherche les =E9l=E9ments dans le deuxi=E8me par=20
GetElementById.

Je suis tomb=E9 sur un os en ce sens que XmlDataDocument ne conna=EEt pas=
=20
GetElementById, et que mes diverses tentatives de cast se sont sold=E9es =

par un =E9chec.

Comme je n'arrivais pas =E0 d=E9clarer un WebBrowser par code je l'ai mis=
=20
d'entr=E9e de jeu sur le formulaire, mais je me suis fait taper sur les=20
doigts lorsque j'ai =E9crit

el2 =3D (System.Xml.XmlNode)=20
WebBrowser1.Document.GetElementById(el.Attributes["id"].Value);

CS0030 Cannot convert type 'System.Windows.Forms.HtmlElement' to=20
'System.Xml.XmlNode'

Bon, alors si je veux afficher c=F4te =E0 c=F4te les textes des deux=20
documents, rapproch=E9s par leurs id, faut-il vraiment que j'ouvre deux=20
WebBrowsers, et que j'oublie les XmlDataDocument ?

Au d=E9but j'avais l'impression qu'=E9viter le webbrowser pouvait donner =

quelque chose de moins lourd, mais peut-=EAtre me suis-je tromp=E9.

2 réponses

Avatar
Vivien Parlat
On 24 fév, 13:18, Gloops wrote:
Bonjour tout le monde,

Afin d'établir un rapprochement entre les éléments de deux documents
portant les mêmes attributs id, je parcours le premier dans un
XmlDataDocument, et je cherche les éléments dans le deuxième par
GetElementById.

Je suis tombé sur un os en ce sens que XmlDataDocument ne connaît pas
GetElementById, et que mes diverses tentatives de cast se sont soldées
par un échec.

Comme je n'arrivais pas à déclarer un WebBrowser par code je l'ai mis
d'entrée de jeu sur le formulaire, mais je me suis fait taper sur les
doigts lorsque j'ai écrit

el2 = (System.Xml.XmlNode)
WebBrowser1.Document.GetElementById(el.Attributes["id"].Value);

CS0030 Cannot convert type 'System.Windows.Forms.HtmlElement' to
'System.Xml.XmlNode'

Bon, alors si je veux afficher côte à côte les textes des deux
documents, rapprochés par leurs id, faut-il vraiment que j'ouvre deux
WebBrowsers, et que j'oublie les XmlDataDocument ?

Au début j'avais l'impression qu'éviter le webbrowser pouvait donner
quelque chose de moins lourd, mais peut-être me suis-je trompé.



Bonjour,

Tu peux utiliser du html comme xml via le Html Agility pack par
exemple (www.codeplex.com/htmlagilitypack) ou sgmlReader (http://
wiki.opengarden.org/Community/SgmlReader_1.7.2).

Ensuite pour ce qui est exploration, pourquoi ne pas regarder du côté
de Linq si jamais le GetElementByID n'existe pas... De plus le type
HtmlDocument contient un GetElementByID en Winforms...

Cordialement...
Avatar
Gloops
Vivien Parlat a écrit, le 26/02/2008 11:43 :
Bonjour,

Tu peux utiliser du html comme xml via le Html Agility pack par
exemple (www.codeplex.com/htmlagilitypack) ou sgmlReader (http://
wiki.opengarden.org/Community/SgmlReader_1.7.2).

Ensuite pour ce qui est exploration, pourquoi ne pas regarder du côté
de Linq si jamais le GetElementByID n'existe pas...



Ah.
Plein de pistes à explorer, en somme.
Je crois que je vais aller au bout de la première, et ensuite creuser
tout ça.
Merci beaucoup.


De plus le type
HtmlDocument contient un GetElementByID en Winforms...



Avec toutefois un bémol :

Erreur CS0143, The type 'System.Windows.Forms.HtmlDocument' has no
constructors defined

lors de la déclaration
HtmlDocument doc2 = new HtmlDocument();

mais ce n'était peut-être pas comme ça qu'il fallait le déclarer ?
Utiliser une interface, peut-être ?