【发布时间】:2016-09-22 14:13:50
【问题描述】:
我有一个 xml 的序列化对象,我想将 xsi:noNamespaceSchemaLocation 添加到根元素,我正在使用 xmlwriter。
我希望我的 xml 像下面的示例一样。
<?xml version="1.0" encoding="utf-8"?>
<root xsi:noNamespaceSchemaLocation="abc.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<child>false</child>
</root>
WriteStartElement 对我不起作用,因为它会在写入 fileWriter 对象后在最终 xml 中创建另一个根元素。
fileWriter.WriteStartElement("root");
fileWriter.WriteAttributeString("xsi", "noNamespaceSchemaLocation", null, "abc.xsd");
我扩展了 xsd.exe 为我的 xsd 生成的部分类,并在我的类中添加了一个成员
[XmlAttribute(AttributeName="noNamespaceSchemaLocation",Namespace="http://www.w3.org/2001/XMLSchema-instance")]
public string noNamespaceSchemaLocation = "abc.xsd";
现在输出是-
<?xml version="1.0" encoding="utf-8"?>
<root p1:noNamespaceSchemaLocation="abc.xsd" xmlns:p1="http://www.w3.org/2001/XMLSchema-instance">
<child>false</child>
</root>
我想用 xsi 代替 p1。我发现这可能是因为 XmlAttribute 的属性无效但不知道是什么。
使用 XMLDocuments 不是一个选项,因为我想使用 xml 序列化。
任何帮助将不胜感激。
【问题讨论】:
标签: xml xsd xml-serialization xmlserializer