Validate xml against dtd from string

Zaxt

New Member
I have an xml file that refers to a local dtd file. But the problem is that my files are being compressed into a single file (I am using Unity3D and it puts all my textfiles into one binary). This question is not Unity3D specific, it is useful for anyone that tries to load a DTD schema from a string.I have thought of a workaround to load the xml and load the dtd separately and then add the dtd file to the XmlSchemas of my document. Like so:\[code\]private void ReadConfig(string filePath){ // load the xml file TextAsset text = (TextAsset)Resources.Load(filePath); StringReader sr = new StringReader(text.text); sr.Read(); // skip BOM, Unity3D catch! // load the dtd file TextAsset dtdAsset = (TextAsset)Resources.Load("Configs/condigDtd"); XmlSchemaSet schemaSet = new XmlSchemaSet(); schemaSet.Add(...); // my dtd should be added into this schemaset somehow, but it's only a string and not a filepath. XmlReaderSettings settings = new XmlReaderSettings() { ValidationType = ValidationType.DTD, ProhibitDtd = false, Schemas = schemaSet}; XmlReader r = XmlReader.Create(sr, settings); XmlDocument doc = new XmlDocument(); doc.Load(r);}\[/code\]The xml starts like this, but the dtd cannot be found. Not strange, because the xml file was loaded as a string, not from a file.\[code\]<?xml version="1.0" encoding="utf-8"?><!DOCTYPE Scene SYSTEM "configDtd.dtd">\[/code\]
 
Back
Top