Updated XmlHelper class to use the XDocument class on .NET 4.0 and XNA 4.0 builds
git-svn-id: file:///srv/devel/repo-conversion/nusu@205 d2e56fa2-650e-0410-a79f-9358c0239efd
This commit is contained in:
parent
6e9c296e6d
commit
8c63901338
|
@ -18,7 +18,7 @@
|
||||||
<DebugType>full</DebugType>
|
<DebugType>full</DebugType>
|
||||||
<Optimize>false</Optimize>
|
<Optimize>false</Optimize>
|
||||||
<OutputPath>bin\net-2.0\Debug\</OutputPath>
|
<OutputPath>bin\net-2.0\Debug\</OutputPath>
|
||||||
<DefineConstants>TRACE;DEBUG;UNITTEST</DefineConstants>
|
<DefineConstants>TRACE;DEBUG;UNITTEST;USE_XMLDOCUMENT</DefineConstants>
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<DocumentationFile>bin\net-2.0\Debug\Nuclex.Support.xml</DocumentationFile>
|
<DocumentationFile>bin\net-2.0\Debug\Nuclex.Support.xml</DocumentationFile>
|
||||||
|
@ -27,7 +27,7 @@
|
||||||
<DebugType>pdbonly</DebugType>
|
<DebugType>pdbonly</DebugType>
|
||||||
<Optimize>true</Optimize>
|
<Optimize>true</Optimize>
|
||||||
<OutputPath>bin\net-2.0\Release\</OutputPath>
|
<OutputPath>bin\net-2.0\Release\</OutputPath>
|
||||||
<DefineConstants>TRACE;UNITTEST</DefineConstants>
|
<DefineConstants>TRACE;UNITTEST;USE_XMLDOCUMENT</DefineConstants>
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<DocumentationFile>bin\net-2.0\Release\Nuclex.Support.xml</DocumentationFile>
|
<DocumentationFile>bin\net-2.0\Release\Nuclex.Support.xml</DocumentationFile>
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
<DebugType>full</DebugType>
|
<DebugType>full</DebugType>
|
||||||
<Optimize>false</Optimize>
|
<Optimize>false</Optimize>
|
||||||
<OutputPath>bin\xna-3.1-xbox360\Debug\</OutputPath>
|
<OutputPath>bin\xna-3.1-xbox360\Debug\</OutputPath>
|
||||||
<DefineConstants>TRACE;DEBUG;XBOX;XBOX360;NO_SERIALIZATION;NO_SYSTEMEVENTS;XNA_3</DefineConstants>
|
<DefineConstants>TRACE;DEBUG;XBOX;XBOX360;USE_XMLDOCUMENT;NO_SERIALIZATION;NO_SYSTEMEVENTS;XNA_3</DefineConstants>
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<NoStdLib>true</NoStdLib>
|
<NoStdLib>true</NoStdLib>
|
||||||
|
@ -30,7 +30,7 @@
|
||||||
<DebugType>pdbonly</DebugType>
|
<DebugType>pdbonly</DebugType>
|
||||||
<Optimize>true</Optimize>
|
<Optimize>true</Optimize>
|
||||||
<OutputPath>bin\xna-3.1-xbox360\Release\</OutputPath>
|
<OutputPath>bin\xna-3.1-xbox360\Release\</OutputPath>
|
||||||
<DefineConstants>TRACE;XBOX;XBOX360;NO_SERIALIZATION;NO_SYSTEMEVENTS;XNA_3</DefineConstants>
|
<DefineConstants>TRACE;XBOX;XBOX360;USE_XMLDOCUMENT;NO_SERIALIZATION;NO_SYSTEMEVENTS;XNA_3</DefineConstants>
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<NoStdLib>true</NoStdLib>
|
<NoStdLib>true</NoStdLib>
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
<DebugType>full</DebugType>
|
<DebugType>full</DebugType>
|
||||||
<Optimize>false</Optimize>
|
<Optimize>false</Optimize>
|
||||||
<OutputPath>bin\xna-4.0-phone7\Debug\</OutputPath>
|
<OutputPath>bin\xna-4.0-phone7\Debug\</OutputPath>
|
||||||
<DefineConstants>TRACE;DEBUG;WINDOWS_PHONE;NO_CLONING;NO_SERIALIZATION;NO_XMLDOCUMENT;NO_SYSTEMEVENTS;NO_EXITCONTEXT</DefineConstants>
|
<DefineConstants>TRACE;DEBUG;WINDOWS_PHONE;NO_CLONING;NO_SERIALIZATION;NO_XMLSCHEMA;NO_SYSTEMEVENTS;NO_EXITCONTEXT</DefineConstants>
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<NoStdLib>true</NoStdLib>
|
<NoStdLib>true</NoStdLib>
|
||||||
|
@ -34,7 +34,7 @@
|
||||||
<DebugType>pdbonly</DebugType>
|
<DebugType>pdbonly</DebugType>
|
||||||
<Optimize>true</Optimize>
|
<Optimize>true</Optimize>
|
||||||
<OutputPath>bin\xna-4.0-phone7\Release\</OutputPath>
|
<OutputPath>bin\xna-4.0-phone7\Release\</OutputPath>
|
||||||
<DefineConstants>TRACE;WINDOWS_PHONE;NO_CLONING;NO_SERIALIZATION;NO_XMLDOCUMENT;NO_SYSTEMEVENTS;NO_EXITCONTEXT</DefineConstants>
|
<DefineConstants>TRACE;WINDOWS_PHONE;NO_CLONING;NO_SERIALIZATION;NO_XMLSCHEMA;NO_SYSTEMEVENTS;NO_EXITCONTEXT</DefineConstants>
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<NoStdLib>true</NoStdLib>
|
<NoStdLib>true</NoStdLib>
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
<DebugType>full</DebugType>
|
<DebugType>full</DebugType>
|
||||||
<Optimize>false</Optimize>
|
<Optimize>false</Optimize>
|
||||||
<OutputPath>bin\xna-4.0-xbox360\Debug\</OutputPath>
|
<OutputPath>bin\xna-4.0-xbox360\Debug\</OutputPath>
|
||||||
<DefineConstants>TRACE;DEBUG;XBOX;XBOX360;NO_CLONING;NO_SERIALIZATION;NO_XMLDOCUMENT;NO_SYSTEMEVENTS;NO_EXITCONTEXT</DefineConstants>
|
<DefineConstants>TRACE;DEBUG;XBOX;XBOX360;NO_CLONING;NO_SERIALIZATION;NO_XMLSCHEMA;NO_SYSTEMEVENTS;NO_EXITCONTEXT</DefineConstants>
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<NoStdLib>true</NoStdLib>
|
<NoStdLib>true</NoStdLib>
|
||||||
|
@ -34,7 +34,7 @@
|
||||||
<DebugType>pdbonly</DebugType>
|
<DebugType>pdbonly</DebugType>
|
||||||
<Optimize>true</Optimize>
|
<Optimize>true</Optimize>
|
||||||
<OutputPath>bin\xna-4.0-xbox360\Release\</OutputPath>
|
<OutputPath>bin\xna-4.0-xbox360\Release\</OutputPath>
|
||||||
<DefineConstants>TRACE;XBOX;XBOX360;NO_CLONING;NO_SERIALIZATION;NO_XMLDOCUMENT;NO_SYSTEMEVENTS;NO_EXITCONTEXT</DefineConstants>
|
<DefineConstants>TRACE;XBOX;XBOX360;NO_CLONING;NO_SERIALIZATION;NO_XMLSCHEMA;NO_SYSTEMEVENTS;NO_EXITCONTEXT</DefineConstants>
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<NoStdLib>true</NoStdLib>
|
<NoStdLib>true</NoStdLib>
|
||||||
|
|
|
@ -24,6 +24,9 @@ using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
|
#if !USE_XMLDOCUMENT
|
||||||
|
using System.Xml.Linq;
|
||||||
|
#endif
|
||||||
using System.Xml.Schema;
|
using System.Xml.Schema;
|
||||||
|
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
|
@ -295,7 +298,11 @@ namespace Nuclex.Support {
|
||||||
using(
|
using(
|
||||||
TempFileKeeper tempFile = new TempFileKeeper(conformantXml)
|
TempFileKeeper tempFile = new TempFileKeeper(conformantXml)
|
||||||
) {
|
) {
|
||||||
|
#if USE_XMLDOCUMENT
|
||||||
XmlDocument document = XmlHelper.LoadDocument(schema, tempFile);
|
XmlDocument document = XmlHelper.LoadDocument(schema, tempFile);
|
||||||
|
#else
|
||||||
|
XDocument document = XmlHelper.LoadDocument(schema, tempFile);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,6 +23,9 @@ using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
|
#if !USE_XMLDOCUMENT
|
||||||
|
using System.Xml.Linq;
|
||||||
|
#endif
|
||||||
using System.Xml.Schema;
|
using System.Xml.Schema;
|
||||||
|
|
||||||
namespace Nuclex.Support {
|
namespace Nuclex.Support {
|
||||||
|
@ -30,7 +33,7 @@ namespace Nuclex.Support {
|
||||||
/// <summary>Helper routines for handling XML code</summary>
|
/// <summary>Helper routines for handling XML code</summary>
|
||||||
public static class XmlHelper {
|
public static class XmlHelper {
|
||||||
|
|
||||||
#if !NO_XMLDOCUMENT
|
#if !NO_XMLSCHEMA
|
||||||
|
|
||||||
#region class ValidationEventProcessor
|
#region class ValidationEventProcessor
|
||||||
|
|
||||||
|
@ -142,6 +145,8 @@ namespace Nuclex.Support {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if USE_XMLDOCUMENT
|
||||||
|
|
||||||
/// <summary>Loads an XML document from a file</summary>
|
/// <summary>Loads an XML document from a file</summary>
|
||||||
/// <param name="schema">Schema to use for validating the XML document</param>
|
/// <param name="schema">Schema to use for validating the XML document</param>
|
||||||
/// <param name="documentPath">
|
/// <param name="documentPath">
|
||||||
|
@ -179,6 +184,52 @@ namespace Nuclex.Support {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#else // !USE_XMLDOCUMENT
|
||||||
|
|
||||||
|
/// <summary>Loads an XML document from a file</summary>
|
||||||
|
/// <param name="schema">Schema to use for validating the XML document</param>
|
||||||
|
/// <param name="documentPath">
|
||||||
|
/// Path to the file containing the XML document that will be loaded
|
||||||
|
/// </param>
|
||||||
|
/// <returns>The loaded XML document</returns>
|
||||||
|
public static XDocument LoadDocument(XmlSchema schema, string documentPath) {
|
||||||
|
using(FileStream documentStream = openFileForSharedReading(documentPath)) {
|
||||||
|
return LoadDocument(schema, documentStream);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>Loads an XML document from a stream</summary>
|
||||||
|
/// <param name="schema">Schema to use for validating the XML document</param>
|
||||||
|
/// <param name="documentStream">
|
||||||
|
/// Stream from which the XML document will be read
|
||||||
|
/// </param>
|
||||||
|
/// <returns>The loaded XML document</returns>
|
||||||
|
public static XDocument LoadDocument(XmlSchema schema, Stream documentStream) {
|
||||||
|
XmlReaderSettings settings = new XmlReaderSettings();
|
||||||
|
settings.Schemas.Add(schema);
|
||||||
|
|
||||||
|
using (XmlReader reader = XmlReader.Create(documentStream, settings)) {
|
||||||
|
var document = XDocument.Load(reader, LoadOptions.None);
|
||||||
|
|
||||||
|
// Create a schema set because the Validate() method only accepts
|
||||||
|
// schemas in a schemaset
|
||||||
|
var schemas = new XmlSchemaSet();
|
||||||
|
schemas.Add(schema);
|
||||||
|
|
||||||
|
// Perform the validation and report the first validation error
|
||||||
|
// encountered to the caller
|
||||||
|
var validationEventProcessor = new ValidationEventProcessor();
|
||||||
|
document.Validate(schemas, validationEventProcessor.OnValidationEvent);
|
||||||
|
if (validationEventProcessor.OccurredException != null) {
|
||||||
|
throw validationEventProcessor.OccurredException;
|
||||||
|
}
|
||||||
|
|
||||||
|
return document;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // USE_XMLDOCUMENT
|
||||||
|
|
||||||
/// <summary>Opens a file for shared reading</summary>
|
/// <summary>Opens a file for shared reading</summary>
|
||||||
/// <param name="path">Path to the file that will be opened</param>
|
/// <param name="path">Path to the file that will be opened</param>
|
||||||
/// <returns>The opened file's stream</returns>
|
/// <returns>The opened file's stream</returns>
|
||||||
|
@ -209,7 +260,7 @@ namespace Nuclex.Support {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // !NO_XMLDOCUMENT
|
#endif // !NO_XMLSCHEMA
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user