none
Einlesen einer xhtml mit XPathDocument erzeugt Fehler RRS feed

  • Frage

  • Hallo,
    ich will eine xhtml-Datei mit XPathNavigator bearbeiten.
    Aber bereits das Einlesen der Datei mit
    XPathDocument xmlDocument = new XPathDocument(sourceFile.ToString());
    gibt eine Fehlermeldung aus:

    Das meta-Anfangstag in Zeile '5' stimmt nicht mit dem Endtag von 'head' überein.

    Wenn ich die meta-Zeile
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    ändere in
    <meta> http-equiv="Content-Type" content="text/html; charset=UTF-8"</meta>
    dann funktioniert es bis er z.B. einen Tag col in ähnlicher Form vorfindet.
    Ändere ich diesen Eintrag manuell, dann funktioniert es weiter bis ...

    Gibt es eine Einstellung von XPathDocument, die dies umgeht?


    Alexander

    Mittwoch, 2. November 2011 17:43

Antworten

  • XML und HTML haben unterschiedliche Syntaxregeln, und vieles, was man als XHTML im Web findet, entspricht nicht den XML-Regeln. So du solche Dokumente hast, kannst du diese nicht erfolgreich mit den .NET System.Xml.XmlReader oder auch System.Xml.XPath.XPathDocument oder System.Xml.XmlDocument oder auch System.Xml.Linq.XDocument lesen.

    Da wirst du im Moment auf Lösungen wie http://htmlagilitypack.codeplex.com/ zurückgreifen müssen.


    MVP Data Platform Development My blog
    • Als Antwort markiert AlexanderRi Mittwoch, 2. November 2011 19:11
    Mittwoch, 2. November 2011 17:55

Alle Antworten

  • XML und HTML haben unterschiedliche Syntaxregeln, und vieles, was man als XHTML im Web findet, entspricht nicht den XML-Regeln. So du solche Dokumente hast, kannst du diese nicht erfolgreich mit den .NET System.Xml.XmlReader oder auch System.Xml.XPath.XPathDocument oder System.Xml.XmlDocument oder auch System.Xml.Linq.XDocument lesen.

    Da wirst du im Moment auf Lösungen wie http://htmlagilitypack.codeplex.com/ zurückgreifen müssen.


    MVP Data Platform Development My blog
    • Als Antwort markiert AlexanderRi Mittwoch, 2. November 2011 19:11
    Mittwoch, 2. November 2011 17:55
  • Ist ja auch irgend wie logisch, da das meta-Tag nicht abgeschlossen ist.  Siehe. z.B. hier. Du solltest es mal mit dem W3C Validator untersuchen.
    Mittwoch, 2. November 2011 17:57