我有一个xml的序列化对象,我想将 xsi:noNamespaceSchemaLocation 添加到root元素,我正在使用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对象后在final xml中创建另一个根元素。
fileWriter.WriteStartElement( “根”);
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.I发现它可能是因为XmlAttribute的无效属性但无法弄清楚是什么。
使用XMLDocuments不是一个选项,因为我想使用xml序列化。
任何帮助将不胜感激。
答案 0 :(得分:0)
p1前缀。当我从xml中删除默认命名空间时,它起作用,现在当我编写部分类时,xsi前缀会被添加。