Problem z XmlReader

Problem z XmlReader
Kamil B
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 4 lata
  • Postów:80
0

Posiadam XML (dokładniej XHTML) wygenerowany z HTML. Próbuję go sparsować za pomocą XmlReader, ale wywala mi wyjątek System.Xml.XmlException: „Odwołanie do niezadeklarowanej jednostki 'raquo'. wiersz 158, pozycja 133.”. O co chodzi? Fragment XML do którego odnosi się wyjątek:
<a onclick="gbar.logger.il(1,{t:66});" href="https://www.google.pl/intl/pl/about/products?tab=wh" class="gbmt">Jeszcze wi&#281;cej &raquo;</a>

edytowany 1x, ostatnio: Kamil B
AdamWox
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 7 godzin
  • Lokalizacja:Jastrzębie-Zdrój
  • Postów:2161
0

Masz znaki specjalne, których XML nie cierpi. You can only use &lt; and &amp; in XML, a ty masz &raquo;

edytowany 1x, ostatnio: AdamWox
Kamil B
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 4 lata
  • Postów:80
0

W takim razie co zrobić aby mój XML z HTML był poprawny

AK
Problem jest w samej zasadzie. Co NAPRAWDĘ chcesz osiągnąć, bo na razie to XY Problem
AdamWox
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 7 godzin
  • Lokalizacja:Jastrzębie-Zdrój
  • Postów:2161
0

Musisz znaleźć reprezentacje liczbową do &raquo;, z którą XML sobie poradzi

Kamil B
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 4 lata
  • Postów:80
0

Tyle że mój program ma być przygotowany na każdy przypadek. Nie wiem jaki jest mój XML, ale program ma być w stanie wyciągnąć z niego pewne informacje jeśli istnieją. Da się coś zrobić aby parser pomijał mi te znaki specjalne?

Kamil B
Ok, znalazłem tabelę wszystkich znaków specjalnych HTML, ale jak teraz sprawić aby parser wiedział że ten znak to np. 4, a inny to 9?
Ktos
Moderator
  • Rejestracja:prawie 23 lata
  • Ostatnio:około 5 godzin
1

Masz poprawnie ustawione DTD w twoim pliku XHTML? Definicja DTD zawiera te wszystkie encje.

Kamil B
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 4 lata
  • Postów:80
0

Sorry że taki niedoedukowany jestem, ale pierwszy raz z XMLami pracuję. Co to DTD?

Kamil B
Wiem że jakieś DTD wyłączałem w ustawieniach XmlReader bo mi wyjątki zgłaszało
Ktos
Na górze pliku XML musi być takie coś jak <!DOCTYPE html....
AK
  • Rejestracja:prawie 7 lat
  • Ostatnio:około miesiąc
  • Postów:3561
1

@Kamil B:

Posiadam XML (dokładniej XHTML) wygenerowany z HTML.

@Kamil B:

Tyle że mój program ma być przygotowany na każdy przypadek.

Myślę, a nawet jestem przekonany, że to ślepa uliczka.
O ile XML jest ścisłym standardem, ale HTML to bajzel, w tym przypadku jest zasada, że miliony much mają rację, akceptowane są błędy itd. Jak się jakoś uporasz ze znakami specjalnymi, wleziesz na następne brązowe placki.

Moze parsować HTML np HtmlAgilityPack, to parser głęboko przygotowany do życia z błędami


Bo C to najlepszy język, każdy uczeń ci to powie
edytowany 1x, ostatnio: AnyKtokolwiek
Kamil B
Nie chcę niczego, jak tylko wyciągnąć podstawowe dane czyli zawartość wybranych tagów. Walidatory XML mówią że jest on poprawny, jedyny problem to te znaki specjalne.
AK
Zamiast zjeść zupę łyżką a drugie widelcem, ty czekasz aż zupa zgęstnieje (btw jeden z parserów HTML się nazywa Soup). Do analizy HTML są pasery HTML. Ja osobiście żałuję, że tam jest jedno wielkie przyzwolenie na błędy, ale nie poradzę. Trafisz na nieco inny HTML za jakiś czas, i się nie skonwertuje do XML-a albo utraci coś ważnego
Kamil B
Hmmm... Pomyślę nad tym. Jakbyś mógł podać linka do tutoriala z tego parsera to by było super
Kamil B
Faktycznie, HtmlAgilityPack jest lepszą opcją, dzięki.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.