C# 使用xslt将xml转换为json

C# 使用xslt将xml转换为json,c#,json,xml,xslt,C#,Json,Xml,Xslt,我试图通过使用C#中的以下代码应用xslt转换来将XML转换为Json。我有以下错误,有人能在下面建议我吗? 代码: 我在outputDocument.Load(stream)处遇到以下错误; System.Xml.dll中发生“System.Xml.XmlException”类型的异常,但未在用户代码中处理 附加信息:有多个根元素。第2行,位置2 谁能帮我破解这个吗 下面是我的XML和XSTL文件 XML: 23/09/2051 26/08/2022 21/12/2031 测试数据 测试数据

我试图通过使用C#中的以下代码应用xslt转换来将XML转换为Json。我有以下错误,有人能在下面建议我吗? 代码:

我在outputDocument.Load(stream)处遇到以下错误; System.Xml.dll中发生“System.Xml.XmlException”类型的异常,但未在用户代码中处理 附加信息:有多个根元素。第2行,位置2

谁能帮我破解这个吗

下面是我的XML和XSTL文件 XML:


23/09/2051
26/08/2022
21/12/2031
测试数据
测试数据
XSLT:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="html" />
  <xsl:template match="RegisterEntry">
    <p>      Test Data Parties<xsl:value-of select="DataItems/TransactionType" /></p>
    <div id="content">
      <table>
        <tr>
          <th valign="top" align="left">            Lodgement Date          </th>
          <td>
            <xsl:value-of select="DataItems/LodgementDate" />
          </td>
        </tr>
        <tr>
          <th valign="top" align="left">            Decision Date          </th>
          <td>
            <xsl:value-of select="DataItems/DecisionDate" />
          </td>
        </tr>
        <xsl:for-each select="DataItems/Particulars/Particular">
          <tr>
            <th valign="top" align="left" style="width:50%">    Test Data <xsl:value-of select="TransactionType" /></th>
            <td>
              <xsl:value-of select="Details" />
            </td>
          </tr>
        </xsl:for-each>
      </table>
    </div>
  </xsl:template>
</xsl:stylesheet>

测试数据方

提交日期 决定日期 测试数据
正如Tim所指出的,问题在于XSLT不能创建一个格式良好的XML文档,您可以使用
XmlDocument
加载它,而只能创建一个片段。因此,如果您需要一个带有结果的
XmlNode
,您可以使用不同的方法,例如

XmlDocument resultDoc = new XmlDocument();
XmlDocumentFragment resultFrag = resultDoc.CreateDocumentFragment();

using (XmlWriter xw = resultFrag.CreateNavigator().AppendChild())
{
  xslt.Transform(doc, null, xw);
  xw.Close();
}

string jsonText = JsonConvert.SerializeXmlNode(resultFrag);

但是,我不知道您的Library JsonConvert是否能够处理文档片段。

您的XML文档或XSLT文档都是无效的XML。您能否提出一个问题,以包含生成异常的XML和XSLT转换的示例,即a?如果我们能自己运行代码,我们就更有可能提供帮助。但错误在于存在多个根元素。第2行,位置2。指示一个XML文档具有多个。一个XML文档必须只有一个根元素。@brijber我认为这不是因为XML可以使用相同的XSLT文件转换为HTML,并且HTML文件是正确的。@user3214322-几乎可以肯定,您生成的输出文档没有一个根元素,但要确定这一点,您应该真正编辑您的问题,以显示您的输入XML和XSLT。谢谢。@TimC按要求添加了文件,请帮助我
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="html" />
  <xsl:template match="RegisterEntry">
    <p>      Test Data Parties<xsl:value-of select="DataItems/TransactionType" /></p>
    <div id="content">
      <table>
        <tr>
          <th valign="top" align="left">            Lodgement Date          </th>
          <td>
            <xsl:value-of select="DataItems/LodgementDate" />
          </td>
        </tr>
        <tr>
          <th valign="top" align="left">            Decision Date          </th>
          <td>
            <xsl:value-of select="DataItems/DecisionDate" />
          </td>
        </tr>
        <xsl:for-each select="DataItems/Particulars/Particular">
          <tr>
            <th valign="top" align="left" style="width:50%">    Test Data <xsl:value-of select="TransactionType" /></th>
            <td>
              <xsl:value-of select="Details" />
            </td>
          </tr>
        </xsl:for-each>
      </table>
    </div>
  </xsl:template>
</xsl:stylesheet>
XmlDocument resultDoc = new XmlDocument();
XmlDocumentFragment resultFrag = resultDoc.CreateDocumentFragment();

using (XmlWriter xw = resultFrag.CreateNavigator().AppendChild())
{
  xslt.Transform(doc, null, xw);
  xw.Close();
}

string jsonText = JsonConvert.SerializeXmlNode(resultFrag);