如何将xsi:noNamespaceSchemaLocation添加到Serializer

时间:2017-12-28 15:00:39

标签: c# xml xsd

我构建了一个需要针对xsd文件进行验证的XML文档。因此,我需要在xml的根元素中引用xsd文件。到目前为止,我使用这个C#代码:

var ser = new XmlSerializer(typeof(myspecialtype));
XmlSerializerNamespaces MainNamespace = new XmlSerializerNamespaces();
MainNamespace.Add("xlink", "http://www.w3.org/1999/xlink");
MainNamespace.Add("xsi", "http://www.w3.org/2001/XMLSchema-instance");
using (XmlWriter w = XmlWriter.Create(@"C:\myxmlfile.xml"))
{
    w.WriteProcessingInstruction("xml-stylesheet", "type=\"text/xsl\" href=\"utils/somexsl.xsl\"");
    ser.Serialize(w, LeBigObject, HauptNs);
}

生成的Xml如下所示:

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="utils/somexsl.xsl"?>
<caddy-xml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xmlVersion="03.07.00">

但我需要这个:

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="utils/somexsl.xsl"?>
<caddy-xml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xmlVersion="03.07.00" xsi:noNamespaceSchemaLocation="utils/theveryimportant.xsd">

我遇到了#34; CreateAttribute&#34;这里:Add Namespace to an xml root node c#但我无法将其与Serializer一起使用。谢谢!

1 个答案:

答案 0 :(得分:0)