Avatar billede bned1232 Nybegynder
14. februar 2008 - 14:36 Der er 8 kommentarer

kan ikke læse en xml fil

Jeg har en række xml-filer, som jeg skal foretage nogle ændringer til dynamisk og outputte som nye xml. Al indhold i noderne er omgivet af CDATA, således at det ikke skulle blive fortolket. Alligevel får jeg ofte fejlmeddelelser af denne slags:

Not found Reference to undeclared entity ' et eller andet'. Jeg er helt med på hvad det betyder, menforstår hvorfor fejlen opstår, når jeg nu angiver, at al data i noderne skal være CDATA

Jeg har forsøgt med to metoder:

string filePath = Path + State.CurrentState.QuerystringVariables["file"];

XmlDocument docXMLFile = new XmlDocument();
docXMLFile.Load(filePath);

XmlElement nodRoot = docXMLFile.DocumentElement;
allMyChildren = nodRoot.InnerText;

Hvilket fejler. Jeg har også forsøgt mig med:

XmlTextReader myReader;
myReader = new XmlTextReader(filePath);

myReader.Read();

while (myReader.Read())
{

if (myReader.Name.Equals("Forside"))
{
test = test + "<Forside><![CDATA[" + myReader.ReadString() + "]></Forside>";
}else if (myReader.Name.Equals("Sagsfremstilling"))
{
test = test + "<Sagsfremstilling><![CDATA[" + myReader.ReadString() + "]]></Sagsfremstilling>";
}
else
{
myReader.Skip();
}
}

Det fejler også. Kan nogen hjælpe mig?
Avatar billede erikjacobsen Ekspert
14. februar 2008 - 14:40 #1
Det der står mellem <![CDATA[ og ]]> må jo ikke selv indeholde en CDATA-blok afsluttet med ]]>  - hvis den gør (og det må man generelt regne med), skal den tekst laves lidt om.
Avatar billede bned1232 Nybegynder
14. februar 2008 - 14:55 #2
Jeg har også prøvet uden de indsatte CDATA felter i myReader-løkken. Det hjalp ikke
Avatar billede erikjacobsen Ekspert
14. februar 2008 - 15:07 #3
Uden hvad? Det interessante er vel hvad der bliver læst med ReadString og sat ind - har du eksempler på noget, der giver fejl. (Og så har du fået skrevet en ] for lidt i dit eksempel her)
Avatar billede bned1232 Nybegynder
14. februar 2008 - 15:36 #4
Nej, det er ikke det interessante. Jeg har prøvet blot at skrive:

string filePath = Path + State.CurrentState.QuerystringVariables["file"];

XmlTextReader myReader;
myReader = new XmlTextReader(filePath);

Der fejler den også med fejlmeddelelsen:

Not found Reference to undeclared entity 'rsquo'. Line 23, position 45.

Så den når aldring til Reader-løkken.

Og det påtrods af, at dataen i noderne i xml-filen er omgivet af CDATA og det iøvrigt er welformed XML
Avatar billede erikjacobsen Ekspert
14. februar 2008 - 16:27 #5
Så står der jo &rsquo; i den fil du læser ind - kan det passe. Hvad er det du læser ind?
Avatar billede bned1232 Nybegynder
14. februar 2008 - 17:50 #6
Ja, lige præcist, der står &rsquo, men det burde vel ikke være noget problem, når det er omkranset af CDATA, så bliver det jo ikke forsøgt fortolket. Det er lige præcist det, der er mit problem. Filen her er blot et eksempel, der er mange af dem, som stammer fra et journal, hvor diverse forfatter journaliserer tekster, som er copy-pasted ind fra diverse teksteditorer.

Men det burde jo ikke være et problem når det er omkranset af CDATA.

Så hvad går der galt?
Avatar billede erikjacobsen Ekspert
14. februar 2008 - 18:37 #7
Næh, der må gerne stå i en CDATA-blok, men det tyder på, at det ikke er tilfældet.
Avatar billede west85 Nybegynder
17. februar 2008 - 00:16 #8
Har du prøvet ak kopiere den brugte xml, så give stien til den kopierede xml og så fjerne cdata delene fra den og se om den så vil læse den?
For normalt fejler en reader hvis den ikke kan læse xml'en.. Det tyder på noget er galt.. Det kan være meget simple ting som begyndelsen af en fil (du ved med utf osv).. Har selv prøvet at kopiere en xml hvor en ellers tilsyneladende fin start fucket det hele op.. Jeg kunne se det hele fejlfrit og der var ingen fejl, men readeren kunne ikke læse det.. Da jeg ændrede start (med uft osv) kunne den godt..

Ellers prøv en helt simpel test.
Lav en xml med et <starttag>test</starttag> og kun det.
Hvis den fungerer så prøv linie for linie at indsætte det originale data så kan du evt. se hvilket data der får den til at fejle.

Ellers prøv at midlertidigt fjerne den linie der melder fejl.. hvis det hjælper er der noget galt der så..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester