2016-05-21 3 views
0

xtdが有効であるかどうかを確認したい場合は、dtdを指定してエラーメッセージを表示するだけです。私はこのバリデーターを書いた。その文書が常に有効であるという問題は、たとえ有効でないとしても。手伝ってくれてありがとう。xtdを使ってxmlを検証する

ます。また、DTD処理に

var settings = new XmlReaderSettings { ValidationType = ValidationType.DTD, DtdProcessing = DtdProcessing.Parse }; 

を有効にする必要がありますし、もちろん、あなたが例えば使用してファイルを解析する必要が

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Xml; 
using System.Xml.Schema; 


namespace XMLValidator 
{ 
    class Program 
    { 
     static void Main() 
     { 


      var messages = new StringBuilder(); 
      var settings = new XmlReaderSettings { ValidationType = ValidationType.DTD }; 
      settings.ValidationEventHandler += (sender, args) => messages.AppendLine(args.Message); 
      var reader = XmlReader.Create("file.xml", settings); 


      if (messages.Length > 0) 
      { 
       Console.WriteLine("Document is not valid!"); 
      } 
      else 
       Console.WriteLine("Document is valid!"); 
     } 

    } 
} 
+0

'設定の場合:D 'は動作しませんが、' ことはありませんが問題の十分な説明... – har07

+0

ありがとう、har07。 :) – Sardothien

+0

あなたのXMLとそれに対応するDTDの外観と、2つのリンク方法を教えてください。 – har07

答えて

2

また
while (reader.Read()) {} 

DTDはまた、外部ファイルに

Console.WriteLineを( "問題が明確ではない!") `
var settings = new XmlReaderSettings { ValidationType = ValidationType.DTD, DtdProcessing = DtdProcessing.Parse, XmlResolver = new XmlUrlResolver() }; 
+0

ありがとう、マーティンですが、それでも "Document is valid"だけが印刷されます。 :) – Sardothien

+0

@Sardothien、あなたはまた、XMLを解析する必要があります。 –

+0

ありがとう、マーティン!問題はdtdが外部ファイルだということでした。 :) :) :) – Sardothien

関連する問題