将Xml属性添加到字符串属性

我有一个自定义对象,它有一个名为’Name’的字符串属性我想保持序列化生成的XML相同,但是为名为’NiceName’的元素添加一个属性,其值为’Full name’。

这就是我目前所拥有的:

 mr nobody  

这就是我想要产生的:

  mr nobody  

我只需要一些XSLT,所以我不想改变类的工作方式,如果可能的话。 IE将名称从字符串更改为自定义类。 所有对象都具有相同的属性,它永远不会改变它将完全只读。

您可以使用XMLAttribute和XmlText()的组合

以下是类声明的示例:

  public class Description { private int attribute_id; private string element_text; [XmlAttribute("id")] public int Id { get { return attribute_id; } set { attribute_id = value; } } [XmlText()] public string Text { get { return element_text; } set { element_text = value; } } } 

输出将是

  text 

如果您定义另一种类型,则可以如下所示:

 public class Person { private string _name; [XmlIgnore] public string Name { get { return _name; } set { _name = value; ThePersonName = new PersonName() { Name = FullName, NiceName = _name }; } } [XmlElement(ElementName = "Name")] public PersonName ThePersonName { get; set; } public string FullName { get; set; } } public class PersonName { [XmlAttribute] public string NiceName { get; set; } [XmlText] public string Name { get; set; } } 

运用

  XmlSerializer s = new XmlSerializer(typeof(Person)); Person ali = new Person(); ali.FullName = "Ali Kheyrollahi"; ali.Name = "Nobody"; s.Serialize(new FileStream("ali.xml",FileMode.Create), ali); 

会产生

   Ali Kheyrollahi Ali Kheyrollahi