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";
它有效。