Frage

ich ein XmlDocument bin mit einem XHTML-String, Konvertieren einiger Knoten auf Nicht-HTML-Knoten zu analysieren und zu bearbeiten.

Was ist der beste Weg, um eine Liste aller Knoten mit einem bestimmten Klassennamen zu bekommen? Kann es mit XPath getan werden?

War es hilfreich?

Lösung

Mit einer Klasse? Wenn es nur die eine Klasse ist, dann sollten Sie in der Lage sein, so etwas wie .SelectNodes zu tun ( „// * [@ class =‚foo‘]“). Wenn es nicht xhtml, dann wird der HTML Agility Pack- lohnt ein Blick auf.

Auf dem Client würde jQuery eine gute Option sein -. Und unterstützt Composite-Klassennamen

Wenn Sie mehrere Klassennamen auf einzelne Elemente haben, und müssen es auf dem Server zu handhaben, ich erwarte, dass Sie vielleicht die Kandidatenklassen finden müssen zuerst ( "// * [@ Klasse! =‚‘]), Und dann Schleife über sie ein Split() und Kontrolle für den Klassennamen in den Ergebnissen zu tun,. dh es abgesehen von Hand ziehen

In LINQ Begriffen, so etwas wie:

        var qry = from XmlElement el in d.SelectNodes("//*[@class!='']")
                  let classes = el.GetAttribute("class").Split(new[] {' '},
                          StringSplitOptions.RemoveEmptyEntries)
                  where classes.Contains("foo")
                  select el;

Andere Tipps

Ja, es ist einfach, mit XPath:

//*[@class='foo']
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top