none
DTD entfernen bzw. setzen RRS feed

  • Frage

  • ich benutze das Framework 4.0

    wie kann ich mit hilfe des XmlDocument die darin enthaltene DTD ermitteln/entfernen/setzen?

    hintergrund: ich habe eine xml-datei, die ihre eigene DTD (per <!DOCTYPE im kopf der datei) mitbringt. nun möchte ich gern diese enthaltene DTD entfernen und durch deine referenz auf ein externes dtd-file ersetzen. wie geht das?

    bitte keine diskusion darüber, ob nun dtd oder ein schema zu bevorzugen ist, diese option besteht hier nicht, die dtd ist nunmal in der datei vorhanden.

    im watch-fenster sieht man übrigens, daß das XmlDocument ein Property "DtdSchemaInfo" enhält, das auch genau die in der datei enthaltene dtd beinhaltet. diese eigenschaft gibts aber nicht für den quelltext (protected?). die Schemas-Auflistung ist ebenfalls leer, wenn ich eine dtd benutze

    danke für hinweise

    micha

    Mittwoch, 6. März 2013 16:23

Antworten

  • war dann zum glück doch nicht so kompliziert:

    XmlDocument doc = GetDocFromXMLFile();
    XmlDocumentType xmlDocTypeDef = doc.DocumentType; //vorhandene, interne DTD
    doc.RemoveChild(xmlDocTypeDef); //löschen
    
    xmlDocTypeDef = doc.CreateDocumentType("name", null, "dtdfilename.dtd", null); //neue DTD
    doc.InsertAfter(xmlDocTypeDef, doc.FirstChild); //vorn einfügen
    
    doc.Save(_Filename);
    
    

    • Als Antwort markiert suriel6666 Donnerstag, 7. März 2013 09:08
    Donnerstag, 7. März 2013 08:49