Записать ссылку на xsd / schema в выводе из XElement.Save () - PullRequest
1 голос
/ 21 марта 2011

В C # предположим, что у меня есть XElement (скажем, myXElement), содержащий некоторую структуру XML.При вызове

   myXElement.Save("/path/to/myOutput.xml");

XML записывается в текстовый файл.Тем не менее, я хотел бы, чтобы этот текстовый файл включал ссылку на (локальный) xsd-файл (XML-схема).То есть я хотел бы, чтобы вывод выглядел примерно так ...

<?xml version="1.0" encoding="utf-8" ?>
<MyElement
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:noNamespaceSchemaLocation="MySchema.xsd">
...

Как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 21 марта 2011

В корневом элементе просто добавьте атрибут:

Пример 1:

XmlDocument d = new XmlDocument();
XmlElement e = d.CreateElement("MyElement");
XmlAttribute a = d.CreateAttribute("xsi", "noNamespaceSchemaLocation", "http://www.w3.org/2001/XMLSchema-instance");

a.Value = "MySchema.xsd";

d.AppendChild(e);
e.Attributes.Append(a);

Пример 2:

XDocument d = new XDocument();
XElement e = new XElement("MyElement");
XAttribute a = new XAttribute(XName.Get("noNamespaceSchemaLocation", "http://www.w3.org/2001/XMLSchema-instance"), "MySchema.xsd");

d.Add(e);
e.Add(a);
0 голосов
/ 21 марта 2011

Вы должны использовать XDocument вместо XElement, так как он содержит методы для получения и установки декларации XML и т. Д. http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.aspx

...