Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.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#_Xml_Serialization - Fatal编程技术网

在C#XML序列化中去掉数组名

在C#XML序列化中去掉数组名,c#,xml,serialization,C#,Xml,Serialization,我试图在序列化XML时获得此结果: <Root Name="blah"> <SomeKey>Eldad</SomeKey> <Element>1</Element> <Element>2</Element> <Element>3</Element> <Element>4</Element> </root> 但是,这是我的结果(为了清

我试图在序列化XML时获得此结果:

<Root Name="blah">
  <SomeKey>Eldad</SomeKey>
  <Element>1</Element>
  <Element>2</Element>
  <Element>3</Element>
  <Element>4</Element>
</root>
但是,这是我的结果(为了清楚起见,删除了名称空间):


埃尔达
1.
2.
3.

是否有办法删除“元素”部分?

在数组上使用XmlElement属性,这将指示序列化程序将数组项序列化为当前元素的子元素,而不是为数组创建新的根元素

[XmlRootAttribute(ElementName="Root", IsNullable=false)] 
public class RootNode 
{ 
    [XmlAttribute("Name")] 
    public string Name { get; set; } 

    public string SomeKey { get; set; } 

    [XmlElement("Element")] 
    public List<int> Elements { get; set; } 
} 
[XmlRootAttribute(ElementName=“Root”,IsNullable=false)]
公共类根节点
{ 
[XmlAttribute(“名称”)]
公共字符串名称{get;set;}
公共字符串SomeKey{get;set;}
[XmlElement(“元素”)]
公共列表元素{get;set;}
} 

也感谢克里斯·泰勒对我问题的回答。使用asmx web服务,我得到了以下XML:

<Manufacturers>
    <Manufacturer>
        <string>Bosch</string>
        <string>Siemens</string>
    </Manufacturer>
</Manufacturers>

博世
西门子
我想直接在元素中获取制造商名称,去掉元素,如下所示:

<Manufacturers>
    <Manufacturer>Bosch</Manufacturer>
    <Manufacturer>Siemens</Manufacturer>
</Manufacturers>

博世
西门子
对于其他有相同问题的人,我的代码(在VB.Net中)是:

_
公共函数GetManufacturers()作为制造商
新制造商的业绩不佳
结果。制造商。添加(“博世”)
结果。制造商。添加(“西门子”)
返回结果
端函数
_
公共类制造商
_
公共制造商作为新列表(字符串)
末级

对于字典,这不起作用,因为我们需要手动浏览项目:(
[XmlRootAttribute(ElementName="Root", IsNullable=false)] 
public class RootNode 
{ 
    [XmlAttribute("Name")] 
    public string Name { get; set; } 

    public string SomeKey { get; set; } 

    [XmlElement("Element")] 
    public List<int> Elements { get; set; } 
} 
<Manufacturers>
    <Manufacturer>
        <string>Bosch</string>
        <string>Siemens</string>
    </Manufacturer>
</Manufacturers>
<Manufacturers>
    <Manufacturer>Bosch</Manufacturer>
    <Manufacturer>Siemens</Manufacturer>
</Manufacturers>
<WebMethod()> _
Public Function GetManufacturers() As Manufacturers
    Dim result As New Manufacturers
    result.Manufacturer.Add("Bosch")
    result.Manufacturer.Add("Siemens")
    Return result
End Function

<XmlRoot(ElementName:="Manufacturers")> _
Public Class Manufacturers
    <XmlElement("Manufacturer")> _
    Public Manufacturer As New List(Of String)
End Class