gpt4 book ai didi

xslt - 使用 XSLT 帮助将 XML 转换为 CSV

转载 作者:行者123 更新时间:2023-12-04 15:37:43 26 4
gpt4 key购买 nike

我想使用 XSLT 将 XML 转换为 CSV,但是当从名为 XML To CSV XSLT 的 SO 线程应用 XSL 时反对我的意见:

<WhoisRecord>  <DomainName>127.0.0.1</DomainName>  <RegistryData>    <AbuseContact>      <Email>abuse@iana.org</Email>      <Name>Internet Corporation for Assigned Names and Number</Name>      <Phone>+1-310-301-5820</Phone>    </AbuseContact>    <AdministrativeContact i:nil="true"/>    <BillingContact i:nil="true"/>    <CreatedDate/>    <RawText>...</RawText>    <Registrant>      <Address>4676 Admiralty Way, Suite 330</Address>      <City>Marina del Rey</City>      <Country>US</Country>      <Name>Internet Assigned Numbers Authority</Name>      <PostalCode>90292-6695</PostalCode>      <StateProv>CA</StateProv>    </Registrant>    <TechnicalContact>      <Email>abuse@iana.org</Email>      <Name>Internet Corporation for Assigned Names and Number</Name>      <Phone>+1-310-301-5820</Phone>    </TechnicalContact>    <UpdatedDate>2010-04-14</UpdatedDate>    <ZoneContact i:nil="true"/>  </RegistryData></WhoisRecord>

I end up with:

  abuse@iana.orgInternet Corporation for Assigned Names and Number+1-310-301-5820,
,
,
,
...,
4676 Admiralty Way, Suite 330Marina del ReyUSInternet Assigned Numbers Authority90292-6695CA,
abuse@iana.orgInternet Corporation for Assigned Names and Number+1-310-301-5820,
2010-04-14,

我的问题是,由此产生的转换缺少节点(如包含 IP 地址的 DomainName 元素),并且一些子节点没有逗号连接(如 AbuseContact 的子节点)。

我想查看 CSV 格式的所有 XML 输出和字符串,如:“abuse@iana.orgInternet Corporation for Assigned Names and Number+1-310-301-5820”,以逗号分隔。

我的 XSL 非常生疏。感谢您的帮助。 :)

这是我正在使用的 XSL:








,





最佳答案

这个简单的转换产生了想要的结果 :

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>

<xsl:template match="/">
<xsl:apply-templates select="//text()"/>
</xsl:template>

<xsl:template match="text()">
<xsl:copy-of select="."/>
<xsl:if test="not(position()=last())">,</xsl:if>
</xsl:template>
</xsl:stylesheet>

请注意 指某东西的用途:
 <xsl:strip-space elements="*"/>

丢弃任何只有空白的文本节点。

更新 :AJ 提出了结果应该按每行记录/元组分组的问题。问题中没有定义记录/元组究竟应该是什么。因此,当前的解决方案解决了纯空白文本节点和缺少逗号两个问题,但并不旨在将输出抓取到记录/元组中。

关于xslt - 使用 XSLT 帮助将 XML 转换为 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2850788/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com