正在向XML添加namespace前缀



我有许多POCO类,它们正在生成序列化所需的XML结构,以便在SOAP WS中作为返回传递。在选定的元素中,我需要为元素添加名称空间前缀/alais。这可能吗?如果是,请怎么办?

POCO类别

public partial class ValueTable
{
private List<ValueTableColumn> headerField;
private row[] rowField;
/// <remarks/>
[System.Xml.Serialization.XmlArrayItemAttribute("column", IsNullable = false)]
public List<ValueTableColumn> header
{
get
{
return this.headerField;
}
set
{
this.headerField = value;
}
}

/// <remarks/>
[XmlElement]
public row[] row
{
get
{
return this.rowField;
}
set
{
this.rowField = value;
}
}
}
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class row
{
private rowField[] fieldField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("field")]
public rowField[] field
{
get
{
return this.fieldField;
}
set
{
this.fieldField = value;
}
}
}
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class rowField
{
private string textField;
/// <remarks/>
public string text
{
get
{
return this.textField;
}
set
{
this.textField = value;
}
}
}

具有所需命名空间前缀/别名的示例XML

<v21:row>
<v21:field>
<v21:text>ID-1005896</v21:text>
</v21:field>
<v21:field>
<v21:text>Smith</v21:text>
</v21:field>
<v21:field>
<v21:text>64AF6547DDSEE</v21:text>
</v21:field>
</v21:row>

目前,返回时没有前缀/别名。

我感谢任何帮助:(

这样的东西应该可以工作:

using System.Xml;
using System.Xml.Serialization;
using System.Xml.XPath;
XmlSerializer serializer = new XmlSerializer(typeof(ValueTable));
XmlDocument doc = new XmlDocument();
XPathNavigator xPathNavigator = doc.CreateNavigator();
var nameSpaces = new XmlSerializerNamespaces();
nameSpaces.Add("yourPrefix", "http://your.namespace.com");
using (var xmlWriter = xPathNavigator.AppendChild())
{
serializer.Serialize(xmlWriter, valueTableObject, nameSpaces);
}

最新更新