Dot-Net

如何在 .NET 中的反序列化期間指定 XML 序列化屬性以支持命名空間前綴?

  • August 10, 2009

我有以下 XML:

<person xmlns:a="http://example.com" xmlns:b="http://sample.net">
   <a:fName>John</a:fName>
   <a:lName>Wayne</a:lName>
   <b:age>37</b:age>
</person>

如何在類上定義 XML 序列化屬性以支持所描述的場景?

您需要使用XmlElement屬性的命名空間來指示每個欄位需要哪些命名空間。這將允許您將欄位與特定命名空間相關聯,但您還需要在您的類上公開一個返回類型XmlNamespaceDeclarations的屬性,以便獲得前綴關聯。

請參閱下面的文件和範例:

[XmlRoot(ElementName = "person")]
public class Person
{
   [XmlElement(Namespace = "http://example.com")]
   public string fname;

   [XmlElement(Namespace = "http://sample.com")]
   public string lname;

   [XmlNamespaceDeclarations]
   public XmlSerializerNamespaces xmlns = new XmlSerializerNamespaces();

   public Person()
   {
       xmlns.Add("a", "http://example.com");
       xmlns.Add("b", "http://sample.com");
   }
}

引用自:https://stackoverflow.com/questions/1254544