Zpracování špatně formátovaného xml souboru.   zodpovězená otázka

XML

Hezký den

Prosím, neznáte způsob jak ingorovat chyby či opravit xml soubor pro další zpracování pomocí xslt? V případě, že použiji funkci

sablona.Transform(XElement.Parse(text).CreateReader, Nothing, mystringwriter)

a xml je s chybami, transformace vygeneruje vyjímku, a nevím jak to ingorovat, neboť chyby ve vstupním xml souboru neovlivňují to co ze souboru chci získat.

Abych uvedl vše na pravou míru, zdrojový xml načítám z internetu, nejsem jeho tvůrce, a soubr není validní, když ho proženu w3c validátorem, jsou tam prakticky 4 typy závažných chyb (prozatím není vyloučeno, že se neobjeví další jiné),

1. znak & není zapsán jako & (je použit v url a javascriptu)

2. mají 2x definovaný totožný ID v elementech

3. v url používají mezeru, kde by mělo být %20

4. a nehrozivější chyba, soubor obsahuje uzavírací tág </p> aniž by byl otevřen.

Všechny tyto chyby prohlížeče ignorují, ale jak to udětal aby to prošlo skrze funkce .net?

Děkuji za jakékoliv nápady.

PS: V současné době pomocí Regexu vstupní soubor koriguji, ale vzhledem, k možnému výstytu jiných chyb, není toto řešení ořechové.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Potíž je v tom, že většina XML parserů požaduje syntakticky validní dokument. Takže je nutné soubor nejdřív opravit, buď regulárními výrazy, nebo to projít ručně.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Obávám se, že s invalidním XML pracovat pomocí prostředků Frameworku nepůjde. Jedině sehnat 3rd párty parsovač, pokud si tedy nechcete psát vlastní. Regulár bych nepoužíval, protože stejně tím nepokryjete všechny potenciální chyby.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Možná to půjde pomocí knihoven pro zpracování HTML, které s nevalidním kódem počítají a nějak ho přechroupají do validního...

http://www.superstarcoders.com/linq-to-h...

http://htmlagilitypack.codeplex.com/

Nevím jak moc jim bude vadit, že to je xml...

---jenom takový nástřel

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Díky, zkusím to, mě napadlo tidy, ale nenašel jsem nikde jedinou funkční verzi pro moje VS (2005).

Jarda

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback