如何使用c#中的属性在xml元素前添加前缀

时间:2013-11-21 13:40:48

标签: c# xml-namespaces prefix xml-attribute

编程是这样的:

结果我希望得到这个:

<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标记前面的方法。

0 个答案:

没有答案