Помогите мне преобразовать код проверки .NET 1.1 Xml в .NET 2.0, пожалуйста - PullRequest
0 голосов
/ 05 мая 2010

Было бы замечательно, если бы вы могли помочь мне избавиться от этих предупреждений ниже. Я не смог найти хороший документ. Поскольку предупреждения сконцентрированы только в разделе private void ValidateConfiguration( XmlNode section ), надеюсь, это не очень сложно, если вы уже сталкивались с этим раньше.

Спасибо!

'System.Configuration.ConfigurationException.ConfigurationException(string)' is obsolete: 'This class is obsolete, to create a new exception create a System.Configuration!System.Configuration.ConfigurationErrorsException'   

'System.Xml.XmlValidatingReader' is obsolete: 'Use XmlReader created by XmlReader.Create() method using appropriate XmlReaderSettings instead. http://go.microsoft.com/fwlink/?linkid=14202'    

private void ValidateConfiguration( XmlNode section )
{                
    // throw if there is no configuration node.
    if( null == section )
    {
        throw new ConfigurationException("The configuration section passed within the ... class was null ... there must be a configuration file defined.", section );
    }
    //Validate the document using a schema
    XmlValidatingReader vreader = new XmlValidatingReader( new XmlTextReader( new StringReader( section.OuterXml ) ) );
    //  open stream on Resources; the XSD is set as an "embedded resource" so Resource can open a stream on it
    using (Stream xsdFile = XYZ.GetStream("ABC.xsd"))
    using (StreamReader sr = new StreamReader(xsdFile))
    {
        vreader.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack);
        vreader.Schemas.Add(XmlSchema.Read(new XmlTextReader(sr), null));
        vreader.ValidationType = ValidationType.Schema;
        // Validate the document
        while (vreader.Read()) { }

        if (!_isValidDocument)
        {
            _schemaErrors = _sb.ToString();
            throw new ConfigurationException("XML Document not valid");
        }
    }
}

// Does not cause warnings.
private void ValidationCallBack( object sender, ValidationEventArgs args )
{
    //  check what KIND of problem the schema validation reader has;
    //  on FX 1.0, it gives a warning for "<xs:any...skip" sections.  Don't worry about those, only set validation false
    //  for real errors
    if( args.Severity == XmlSeverityType.Error )
    {
        _isValidDocument = false;
        _sb.Append( args.Message + Environment.NewLine );
    }
}

Ответы [ 2 ]

1 голос
/ 05 мая 2010
  1. Заменить throw new ConfigurationException(....) с

    throw new ConfigurationErrorsException(....)

  2. Заменить XmlValidatingReader vreader = new XmlValidatingReader(...) с


var vreader = XmlReader.Create(new StringReader(section.OuterXml), 
                               new XmlReaderSettings
                               {
                                  ValidationType = ValidationType.Schema
                               });
1 голос
/ 05 мая 2010

По сути, он говорит вам использовать XmlReaderSettings вместо XmlValidatingReader, который устарел.

Лично я не собираюсь делать преобразование, я думаю, что вы действительно делаете это, что будет полезно для разработки кода, поэтому вот некоторые ресурсы:

Посмотрите на перегрузки метода XmlReader.Create(), в частности этот .

Затем взгляните на различные свойства, связанные с классом XmlReaderSettings: http://msdn.microsoft.com/en-us/library/system.xml.xmlreadersettings_members.aspx

Попробуйте, посмотрите, что произойдет, и если у вас все еще есть проблемы, задайте другой вопрос:)

НТН

...