【问题标题】:How to return a list of serializable XML elements如何返回可序列化 XML 元素的列表
【发布时间】:2017-07-05 13:47:41
【问题描述】:

我知道如何让函数以 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...

这是,我的意思是......看看它......它的可怕。

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

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

【问题讨论】:

  • 没有根元素的结构是无效的 XML 格式。您可以手动创建没有根元素的文件,但标准 Xml 解析器将无法解析它

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


【解决方案1】:

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

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

    var Content=MainElement.ReadInnerXml();

【讨论】:

  • 我理解了这个概念,但我在任何库或XElement 类中都找不到XElementACreateReader
  • 我使用 XElementA 作为变量,代表 XElement 类的一个实例。 CreateReader 是 System.XML.Linq 命名空间中 XElement 类的方法。 msdn.microsoft.com/en-us/library/…
猜你喜欢
  • 2019-03-11
  • 2023-03-07
  • 1970-01-01
  • 2012-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-21
  • 1970-01-01
相关资源
最近更新 更多