C# Xml序列化:Can';t在父元素和子元素中定义相同的命名空间
我需要创建类似以下内容的xml结构:C# Xml序列化:Can';t在父元素和子元素中定义相同的命名空间,c#,.net,xml,serialization,C#,.net,Xml,Serialization,我需要创建类似以下内容的xml结构: <?xml version="1.0" encoding="utf-8"?> <ns0:RootElement xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns0="http://fuu.gub"> <ns0:ChildElement xmlns:ns0="ht
<?xml version="1.0" encoding="utf-8"?>
<ns0:RootElement xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns0="http://fuu.gub">
<ns0:ChildElement xmlns:ns0="http://fuu.gub">
<ns0:Data>Some-data</ns0:Data>
</ns0:ChildElement>
</ns0:RootElement>
在这里我发现了这个:
为元素定义命名空间时,所有子元素
相同的前缀与相同的命名空间相关联
名称空间可以在使用它们的元素中声明,也可以在
XML根元素
注意:解析器不使用名称空间URI进行查找
信息
定义命名空间时,不能使用同一前缀再次定义另一个/同一命名空间
我相信您可以使用相同的名称空间和不同的前缀
<?xml version="1.0" encoding="utf-8"?>
<ns0:RootElement xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns0="http://fuu.gub">
<ns0:ChildElement>
<ns0:Data>Some-data</ns0:Data>
</ns0:ChildElement>
</ns0:RootElement>
[XmlRoot("RootElement", Namespace = "http://fuu.gub")]
public class RootElement
{
[XmlNamespaceDeclarations]
public XmlSerializerNamespaces XmlNamespaces { get; set; }
[XmlElement("ChildElement")]
public ChildElement Child { get; set; }
public RootElement() {
XmlNamespaces = new XmlSerializerNamespaces();
XmlNamespaces.Add("ns0", "http://fuu.gub");
Child = new ChildElement();
}
public void ToXml(string path)
{
XmlSerializer x = new System.Xml.Serialization.XmlSerializer(this.GetType());
TextWriter txtW = new StreamWriter(path);
x.Serialize(txtW, this);
}
}
[XmlRoot(Namespace = "http://fuu.gub")]
public class ChildElement
{
[XmlNamespaceDeclarations]
public XmlSerializerNamespaces XmlNamespaces { get; set; }
[XmlElement]
public string Data{ get; set; }
public ChildElement()
{
XmlNamespaces = new XmlSerializerNamespaces();
XmlNamespaces.Add("ns0", "http://fuu.gub");
Data = "Some-data";
}
}