(относится к моему вопросу Синтаксический анализ XML с использованием схемы в C # )
Я работаю над кодом для приложения, которое будет использовать 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 во время открытия и анализа?