如何将XSI:NOMAMESPACESPACESCHEMALATION中添加到序列化器



i构建一个XML文档,需要使用XSD文件进行验证。因此,我需要在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">

我在这里遇到" CreateAttribute":将命名空间添加到XML根节点C#,但我无法将其与序列化器一起放在一起。谢谢!

i在这里指向解决方案:https://social.msdn.microsoft.com/forums/en-us/e43585c6-181b-4449-8806-b07f82681a2a/how-to-to-to-to-include-include-xslude-xsinonononespaceschemalocation-pacechemalocation-in-in-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-the-forum一下

我将其添加到我的班级:

[XmlAttribute("noNamespaceSchemaLocation", Namespace = XmlSchema.InstanceNamespace)]
    public string attr = "utils/theveryimportant.xsd";

它有效。

最新更新