Пространство имен XML .net Serialization внутри пространства имен - PullRequest
1 голос
/ 26 января 2010

Я хочу сгенерировать XML, как это:

<a:foo>
  <b:bar><b:value="test" /></b:bar>
</a:foo>

Я генерирую XML из дескриптора класса. У меня есть это:

[Serializable]
[XmlType(Namespace = Constants.NS_A)]
[XmlRoot("Foo", Namespace = Constants.NS_A, IsNullable = false)]
public class Foo 
{
  private Bar_ bar = new Bar_();

  [XmlElementAttribute("bar")]
  public Bar_ Bar { get { return bar; } 
                    set { bar = value; } }

}

[Serializable]
[XmlType(Namespace = Constants.NS_B)]
[XmlRoot("Bar", Namespace = Constants.NS_B, IsNullable = false)]                        
  public class Bar_ 
  {                     
    private string value_;

    [XmlElementAttribute("value")]
    public string Value_
    {
        get
        {
            return value_;
        }
        set
        {
            value_ = value;
        }
    }
  }

С помощью этих классов я могу сгенерировать XML следующим образом:

<a:foo>
  <a:bar><b:value="test" /></a:bar>
</a:foo>

И это не то, что я хочу ...

Нужна небольшая помощь. Спасибо

1 Ответ

2 голосов
/ 26 января 2010

Вы можете указать пространство имен, которое вы хотите для своего XML результата, в XmlElementAttribute в свойстве Bar:

[Serializable] 
[XmlType(Namespace = Constants.NS_A)] 
[XmlRoot("Foo", Namespace = Constants.NS_A, IsNullable = false)]
public class Foo  
{ 
  private Bar_ bar = new Bar_(); 

  [XmlElementAttribute("bar", Namespace = Constants.NS_B)] 
  public Bar_ Bar { get { return bar; }  
                    set { bar = value; } } 

} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...