Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在具有名称空间前缀的元素中创建不带名称空间前缀的XML元素_C#_.net_Xml_Xml Namespaces_Xmlserializer - Fatal编程技术网

C# 在具有名称空间前缀的元素中创建不带名称空间前缀的XML元素

C# 在具有名称空间前缀的元素中创建不带名称空间前缀的XML元素,c#,.net,xml,xml-namespaces,xmlserializer,C#,.net,Xml,Xml Namespaces,Xmlserializer,使用XmlSerializer类,我希望在XML中实现以下结果: <n:root xmlns:n="http://foo.bar"> <child/> </n:root> 然后我尝试将名称空间添加到XmlSerializer,并使用XmlSerializerNamespaces类对其进行序列化: public string Foo() { var root = new Root { Child = new Child() }; va

使用XmlSerializer类,我希望在XML中实现以下结果:

<n:root xmlns:n="http://foo.bar">
    <child/>
</n:root>
然后我尝试将名称空间添加到XmlSerializer,并使用XmlSerializerNamespaces类对其进行序列化:

public string Foo()
{
    var root = new Root { Child = new Child() };

    var ns = new XmlSerializerNamespaces();
    ns.Add("n", "http://foo.bar");

    var s = new XmlSerializer(typeof(Root));
    var sb = new StringBuilder();
    var xml = XmlWriter.Create(sb);
    s.Serialize(xml, root, ns);
    return sb.ToString();
}
但是,该方法返回以下XML:

<n:root xmlns:n="http://foo.bar">
    <n:child/>
</n:root>

如何使XmlSerializer避免向内部元素添加名称空间前缀


inb4:我知道子元素没有其父元素的名称空间看起来很奇怪,但这就是我从客户端收到的消息的形状,我需要创建一个模仿相同行为的模拟web服务。

像这样更改
类应该可以做到:

[XmlRoot(ElementName = "root", Namespace = "http://foo.bar")]
public class Root
{
    // note empty namespace here
    [XmlElement(ElementName = "child", Namespace = "")]
    public Child Child { get; set; }
}

我一直在寻找这一个我自己,我几乎得到了它,但过去了。。。我指定了child的Namespace=null,但它不起作用,所以我继续尝试其他事情。妈的,这么简单:)谢谢。
<n:root xmlns:n="http://foo.bar">
    <n:child/>
</n:root>
[XmlRoot(ElementName = "root", Namespace = "http://foo.bar")]
public class Root
{
    // note empty namespace here
    [XmlElement(ElementName = "child", Namespace = "")]
    public Child Child { get; set; }
}