如何返回可序列化XML元素列表

时间:2017-07-05 13:47:41

标签: c# xml asp.net-web-api

我知道如何使函数返回"漂亮"结果为xml,我想要那个,但没有额外的父元素。

使用此功能

[HttpGet]
public XElement MyFunction() { ... }

让我走了一半。我明白了:

<Result>
    <row>
        <cell>...</cell>
        <cell>...</cell>
        <cell>...</cell>
    </row>
    <row>
        <cell>...</cell>
        <cell>...</cell>
        <cell>...</cell>
    </row>
</Result>

我想要这样的结果:

<row>
    <cell>...</cell>
    <cell>...</cell>
    <cell>...</cell>
</row>
<row>
    <cell>...</cell>
    <cell>...</cell>
    <cell>...</cell>
</row>

使用这样的功能:

[HttpGet]
public IEnumerable<XElement> MyFunction() { ... }

给我一​​个这样的结果:

<ArrayOfXElement 
xmlns:i="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://schemas.datacontract.org/2004/07/System.Xml.Linq">
    <XElement>
        <row xmlns="">
            <cell>...</cell>
            <cell>...</cell>
            <cell>...</cell>
        </row>
    </XElement>
    <XElement>
        <row xmlns="">
            <cell>...</cell>
            <cell>...</cell>
            <cell>...</cell>
        </row>
    </XElement>
    etc...

这就是我的意思......看看它......它的丑陋。

我认为必须有一个简单的解决方案,或者至少是一种解决方法。

编辑正如@Fabio在第一条评论中所建议的那样,如果XML没有根元素,则XML无效,因此,这个问题变得愚蠢,因为我确实需要其他系统才能阅读我的功能的结果。即便如此,我也不会删除这个问题,因为我希望像我一样需要这样的解决方案的人会意识到那种XML文档是无效的。此外,如果有人回答了这个问题,我会批准答案。

1 个答案:

答案 0 :(得分:0)

获取读者并获取innerXml。这应该可以满足您的需求。

   var MainElement= XElementA.CreateReader();
    MainElement.MoveToContent();

    var Content=MainElement.ReadInnerXml();