(Относящиеся к моему вопросу XML Parsing using a schema in C#)Создание файла XML с помощью схемы
Я работаю на некоторый код для приложения, которое будет использовать XML для хранения бизнес-объектов (они предназначены, чтобы быть достаточно мал, так что я что XML может быть проще анализировать, обрабатывать и проверять, а не использовать текстовые файлы или какой-то пользовательский формат файла). Я уже написал схему и задавался вопросом, как бы я хотел добавить ссылку на эту схему в выводимых XML-файлах.
Как с вопросом, который я связал, я использую XmlDocument для записи файлов, потому что мне нужно работать в .net 3.5 - то же самое, что и вопрос, с которым я связан. Я также использую XmlDeclaration, XmlNode и XmlElement для записи отдельных частей xml-файла в объект XmlDocument.
Вот пример того, что я делаю:
if (!File.Exists(fileName))
{
XmlDocument xmlDocumentWriter = new XmlDocument();
XmlDeclaration xmlDec = xmlDocumentWriter.CreateXmlDeclaration("1.0", "utf-8", null);
xmlDocumentWriter.AppendChild(xmlDec);
XmlNode root = xmlDocumentWriter.CreateElement("root");
XmlElement childNodeInfo = xmlDocumentWriter.CreateElement("parent-of-some-child");
root.AppendChild(childNodeInfo);
childNodeInfor.AppendChild(xmlDocumentWriter.CreateElement("SomeChild")).InnerText = _somevariable.ToString();
/* continue in this way until they've all been added */
xmlDocumentWriter.Appendchild(root);
xmlDocumentWriter.Save(fileName);
/* close all open streams and xml objects */
}
Каким будет создан файл XML так:
<?xml version="1.0" encoding="utf-8" ?>
<root>
<parent-of-some-child>
<somechild>value</somechild>
</parent-of-some-child>
</root>
Но, как бы я идти о добавлении ссылки на схему в корневой узел?
Схема Я написал выглядит примерно так:
<?xml version="1.0" encoding="utf-8" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="urn:schema-name"
elementFormDefault="qualified">
<xsd:element name="root">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="parent-of-some-child">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="some-child" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element name="parent-of-some-child">
</xsd:sequence>
</xsd:complexType>
</xsd:element name="root">
Я ищу, чтобы создать что-то вроде этого:
<?xml version="1.0" encoding="utf-8" ?>
<root xmlns="reference-to-schema">
<parent-of-some-child>
<somechild>value</somechild>
</parent-of-some-child>
</root>
Или мне даже нужна ссылка на схему в xml-файл? Использовать схему для проверки xml во время открытия и разбора достаточно?
проверить этот вопрос: http://stackoverflow.com/questions/8324960/creating-xdocument-with-xsischemalocation-namespace – 2GDev
Кроме того, что я использую .NET 3.5 , и [в этой статье MSDN] (http://msdn.microsoft.com/en-us/library/system.xml.linq.xnamespace.aspx) указано, что пространство XNamespace доступно только в .NET 4 –
http: // msdn .microsoft.com/en-us/library/system.xml.linq.xnamespace (v = vs.90) .aspx XNamespace может использоваться с .NET 3.5. См. Пространство имен System.Xml.Linq. – 2GDev