Autor Beitrag
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 10.11.05 10:34 
Ich schreibe mir gerade ein Interface für den Help 2.0-Compiler von Microsoft. Es gibt zwar einen kostenlosen, aber der Compiler selbst ist als Schnittstelle im System registriert, so dass man ihn ansteuern und nutzen kann. Dabei gibt es auch keine Probleme.
Es ist nur so, dass mein Compiler automatisch den Namen der Zieldatei ermitteln soll, wenn der User keinen Namen vorgibt. Auch das wäre kein Problem, denn es steht ja in der Projektdatei drin:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE HelpCollection SYSTEM "MS-Help://Hx/Resources/HelpCollection.DTD">
<HelpCollection DTDVersion="1.0"
    LangId="1031"
                ...
>
  <CompilerOptions 
               ...
               OutputFile="..\..\release\base.HxS"
  >

  </CompilerOptions>

  <!-- ... -->
</HelpCollection>

Ich weiß natürlich auch, wie ich den Wert auslesen kann. :) Der Parser meckert eigentlich nur über den ms-help-Präfix bei der DTD. Er schreibt:
Zitat:
The URI prefix is not recognized.

Und darum benötige ich einfach nur einen Weg, die DTD-Prüfung zu umgehen bzw. zu ignorieren, wie man es beim MS XML-Parser (API) konnte.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 10.11.05 10:49 
:roll: Lösung selbst gefunden :lol: Man setze den "XmlResolver" auf null, und das war´s:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
try
{
  XmlDocument xmldoc = new XmlDocument();
  xmldoc.XmlResolver = null;  // <-- VOILÀ!

  xmldoc.Load(this.projectFile);
  XmlNode node =
    xmldoc.SelectSingleNode("/HelpCollection/CompilerOptions/@OutputFile");
  if (node != nullthis.outputFile = node.InnerText;
}
catch(Exception ex)
{
  Console.WriteLine(ex.ToString());
}