是否可以为C#对象模型设置声明性标记,以便生成如下内容:
...
<locales>
<add d5p1:Transform="Insert" Locator="asdasdf" id="698" code="tr" name="Turkish" xmlns:d5p1="xdt" />
<add id="701" code="fr" name="French" />
</locales>
...
而不是:
public class BaseTransformation
{
[XmlAttribute]
public string IsDefault { get; set; }
[XmlAttribute(Namespace ="xdt")]
public string Transform { get; set; }
//[XmlAttribute("Locator")]
public string Locator { get; set; }
}
public class Locale : BaseTransformation
{
[XmlAttribute("id")]
public long ID { get; set; }
[XmlAttribute("code")]
public string Code { get; set; }
[XmlAttribute("name")]
public string Name { get; set; }
}
public class Languages
{
[XmlArray(ElementName = "locales")]
[XmlArrayItem(ElementName = "add")]
public Locale[] Locales { get; set; }
}
我的代码的一个简单示例是:
CountdownLatch
我正在尝试动态生成web.config转换。 的 d5p1:变换=&#34;插入&#34; xmlns:d5p1 =&#34; xdt&#34; 这两个无法识别 在构建时,不会应用与预期相同的功能。
答案 0 :(得分:2)
您将XML名称空间前缀与实际名称空间混淆。在Namespace
的{{1}}属性中,指定完整的实际命名空间,而不是为该命名空间定义的前缀。命名空间前缀是任意的,您可以使用XmlAttribute
属性在特定命名空间中使用您希望的任何前缀。序列化认为你在谈论名为&#34; xdt&#34;的命名空间,而不是实际命名空间&#34; xdt&#34;命名空间通常指:&#34; http://schemas.microsoft.com/XML-Document-Transform&#34;
xmlns