结果我希望得到这个:
<rootprefix:rootname
noPrefix="attribute with no prefix"
firstprefix:attrOne="first atrribute"
secondprefix:attrTwo="second atrribute with different prefix">
...other elements...
</rootprefix:rootname>
通过编码实现这一目标的方法是:
NameTable nt = new NameTable();
nt.Add("key");
XmlNamespaceManager ns = new XmlNamespaceManager(nt);
ns.AddNamespace("firstprefix", "fp");
ns.AddNamespace("secondprefix", "sp");
root.SetAttribute("attrOne", ns.LookupPrefix("fp"), "1st attribute");
root.SetAttribute("attrTwo", ns.LookupPrefix("sp"), "2nd with different prefix");
但我想使用类声明上面的类型属性来做这件事。
例如:[XmlType(Namespace = "bb:aaaa")]
或其他。
我该怎么做?
编辑: 我的班级是这样的:
[XmlRoot("Node", Namespace="http://flibble")]
public class MyType {
[XmlElement("chileNode")]
public string Value { get; set; }
}
我希望得到这个结果:
<?xml version="1.0" encoding="ibm857"?>
<myNamespace:Node xmlns:myNamespace="http://hede.com" />
不编写此代码:
static class Program
{
static void Main()
{
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("myNamespace", "http://hede.com");
XmlSerializer xser = new XmlSerializer(typeof(MyType));
xser.Serialize(Console.Out, new MyType(), ns);
}
}
有这样的属性:
[XmlRoot("Node", Namespace="http://hede.com", NamespacePrefix="myNamespace")]
public class MyType {
[XmlElement("chileNode")]
public string Value { get; set; }
}
但我找不到将“myNamespace”前缀放在xml标记前面的方法。