使用C#将XML转换为CSV而不使用xslt

扎克·M。

我一直在网上搜索所有内容,我假设有人需要在我之前这样做并更好地完成,以便将XML转换为CSV转换器。我在下面有一个非常标准的xml:

<ArrayOfDealer xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
    <Dealer>
        <Cmf>76066699</Cmf>
        <DealerNumber/>
        <DealershipName>BROWARD MOTORSPORTS - WPB</DealershipName>
    </Dealer>
    <Dealer>
        <Cmf>76071027</Cmf>
        <DealerNumber/>
        <DealershipName>BROWARD MOTORSPORTS OF FT LAUDERDALE LLC</DealershipName>
    </Dealer>
    <Dealer>
        <Cmf>76014750</Cmf>
        <DealerNumber/>
        <DealershipName>Jet Ski of Miami</DealershipName>
    </Dealer>
    <Dealer>
        <Cmf>76066987</Cmf>
        <DealerNumber/>
        <DealershipName>BROWARD MOTORSPORTS - Davie</DealershipName>
    </Dealer>
</ArrayOfDealer>

我想将其解析为

cmf      dealernumber    dealershipname
76066699                 BROWARD MOTORSPORTS - WPB
76014750                 Jet Ski of Miami
76066987                 BROWARD MOTORSPORTS - Davie

XML来自我存储为字符串的api。

有什么想法吗?

编辑:为澄清起见,我知道结构将与上面类似,没有节点的进一步嵌套,但是实际的标签名称可能非常相似。

谜团

这样的事情会满足您的需求吗?

Func<string, string> csvFormat =
    t => String.Format("\"{0}\"", t.Replace("\"", "\"\""));

var xml = XDocument.Parse(/* xml text here */);

Func<XDocument, IEnumerable<string>> getFields =
    xd =>
        xd
            .Descendants("Dealer")
            .SelectMany(d => d.Elements())
            .Select(e => e.Name.ToString())
            .Distinct();

var headers =
    String.Join(",",
        getFields(xml)
            .Select(f => csvFormat(f)));

var query =
    from dealer in xml.Descendants("Dealer")
    select string.Join(",",
        getFields(xml)
            .Select(f => dealer.Elements(f).Any()
                ? dealer.Element(f).Value
                : "")
            .Select(x => csvFormat(x)));

var csv =
    String.Join(Environment.NewLine,
        new [] { headers }.Concat(query));

这仍然假定<ArrayOfDealer><Dealer>结构表示相同,但​​是下面的字段可能会更改。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用C#将XML转换为CSV

来自分类Dev

使用 C# 将 XML 转换为 CSV

来自分类Dev

使用xslt将XML多级转换为csv

来自分类Dev

使用XSLT将CSV转换为分层XML

来自分类Dev

如何使用 XSLT 将 Schema XML 转换为 CSV

来自分类Dev

使用XSLT将XML转换为XML

来自分类Dev

使用xslt将xml转换为html

来自分类Dev

使用XSLT将XML转换为JSON

来自分类Dev

使用XSLT将JSON转换为Xml

来自分类Dev

使用XSLT将XMI转换为XML

来自分类Dev

使用xslt将XML转换为TXT

来自分类Dev

使用 xslt 将 xml 转换为 json

来自分类Dev

如何使用C#将XML文件转换为CSV文件

来自分类Dev

使用 XSLT 将 XML 转换为 CSV:如何排除 XML 版本?

来自分类Dev

使用 XSLT(使用嵌套循环)将 XML 文件转换为 CSV 文件

来自分类Dev

使用C#将CSV转换为多维数组

来自分类Dev

在C#中使用XSLT转换XML

来自分类Dev

使用xsltproc将XML转换为CSV

来自分类Dev

使用Java将XML转换为CSV

来自分类Dev

使用C#从XML到HTML而不使用xslt

来自分类Dev

使用XSLT将XML转换为XML(无父节点)

来自分类Dev

XSLT-使用Xsl将Xml转换为Xml

来自分类Dev

使用XSLT将XML文件转换为RDF / XML

来自分类Dev

使用XSLT将旧的XML转换为新的XML格式

来自分类Dev

使用XSLT 1.0将非xml转换为xml或SOAP

来自分类Dev

使用XSLT将FGDC XML转换为ISO XML

来自分类Dev

使用带条件的 XSLT 将 XML 转换为 XML

来自分类Dev

使用 XSLT 文件将 XML 转换为 XML

来自分类Dev

使用 XSLT 将 XML 转换为 CSV - 保留波兰语字母