2017-07-05 87 views
-2

我知道如何使函数返回一个“漂亮”的结果为XML,我想这一点,但没有额外的父元素。如何返回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... 

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

我beleave必须有一个简单的解决这一点,或至少一种替代方法。

编辑作为@Fabio第一评论所说,XML是无效的,如果它没有根元素,因此,这个问题变得愚蠢,因为我确实需要其他系统能够读取我的函数的结果。即便如此,我不会删除这个问题,因为我希望别人谁需要这样的意愿的解决方案,像我一样,认识到那种XML文档是无效的。另外,如果有人回答这个问题,我会批准答案。

+0

结构是无效的XML格式。您可以手动创建一个没有根元素,但标准的XML解析器的文件不会被提供给解析它 – Fabio

回答

0

吸引读者,并获得innerXml。这应该让你得到你所需要的。无根元素

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

    var Content=MainElement.ReadInnerXml(); 
+0

我理解的概念,但我找不到'XElementA'也不'CreateReader'在任何图书馆也不'XElement'类。 – Monset

+0

我使用XElementA作为变量,表示XElement类的一个实例。 CreateReader是System.XML.Linq NameSpace中的XElement类的一种方法。 https://msdn.microsoft.com/en-us/library/system.xml.linq.xelement.createreader(v=vs.110).aspx –