Hallo!
Ich möchte ein XML auslesen und in ein weiteres XML schreiben. Klingt eigentlich ja ganz einfach. Ist es wahrscheinlich auch.
Mein Problem dabei: Ich verwendet XMLs mit einer UTF-8 Codierung als Ausgangsbasis. Dann iteriere ich über die einzelnen Nodes des XML-Dokuments. Im Anschluss lege ich mir einen String an, mit dem ich das neue XML befüllen möchte, und zwar so:
string nodeText = node.InnerText;
XMLString = "" +
"" +
"";
XMLDoc = fetchData(XMLString); // wurde mit XmlDocument XMLDoc = new XmlDocument(); angelegt
Die Methode fetchData öffnet die zu lesende Datei und liest die Daten aus. Sie ist wie folgt aufgebaut:
StringBuilder sb = new StringBuilder();
byte[] buf = new byte[8192];
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream resStream = response.GetResponseStream();
string tempString = null;
int count = 0;
while (count \> 0) {
count = resStream.Read(buf, 0, buf.Length);
if (count != 0) {
tempString = Encoding.UTF8.GetString(buf, 0, count);
sb.Append(tempString);
}
}
XmlDocument newDoc = new XmlDocument();
newDoc.LoadXml(sb.ToString());
Soweit funktioniert alles ganz gut. Nur sobald ich ein &, ’ oder # in der auszulesenden XML-Datei habe, bekomme ich folgende Fehlermeldung:
ERRORERROR! Description: System.Xml.XmlException: Ungültige Daten auf Stammebene. Zeile 1, Position 1.
at System.Xml.XmlTextReader.ParseRoot()
at System.Xml.XmlTextReader.Read()
at System.Xml.XmlValidatingReader.ReadWithCollectTextToken()
at System.Xml.XmlValidatingReader.Read()
at System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace)
at System.Xml.XmlDocument.Load(XmlReader reader)
at System.Xml.XmlDocument.LoadXml(String xml)
at ASP.import\_aspx.fetchURL(String XMLString) in test.aspx:line 258 -\> hier wird XML in neues XML Dokument XmlDocument geschrieben
at ASP.import\_aspx.ParseXml(XmlNode node) in test.aspx:line 156
at ASP.import\_aspx.ParseXml(XmlNode node) in test.aspx:line 162
at ASP.import\_aspx.ParseXml(XmlNode node) in test.aspx:line 162
at ASP.import\_aspx.ImportFiles(String basedir) in test.aspx:line 79
Zur Erklärung:
test.aspx:line 258 -> hier wird XML in neues XML Dokument XmlDocument geschrieben
test.aspx:line 156 -> Aufruf von fetchData
test.aspx:line 162 -> Aufruf der Iterationsfunktion
test.aspx:line 79 -> Aufruf der Iterationsfunktion
Hat irgend jemand eine Idee, was ich zur Behebung des Problems ändern könnte?
DANKE und liebe Grüße,
melvont