gpt4 book ai didi

c# - 无法从已加载的输入文档中删除空格。将输入文档提供为 XmlReader

转载 作者:行者123 更新时间:2023-12-02 13:21:39 28 4
gpt4 key购买 nike

我想转换 XML 文档,但遇到问题。

我的 XSLT 看起来像这样:

<?xml version="1.0" encoding="iso-8859-1" ?> 
<xsl:stylesheet version="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" />
<xsl:strip-space elements="*" />

<xsl:template match="/">
<xsl:apply-templates select="address" />
</xsl:template>

<xsl:template match="address">
<xsl:value-of select="@street" />
<xsl:value-of select="@housenr" />
<xsl:value-of select="@zipcode" />
<xsl:value-of select="@city" />
<xsl:value-of select="@country" />
</xsl:template>
</xsl:stylesheet>

我想要转换的 XML 文档如下所示:

<address id="4" type="1" 
typename="Postadres"
street="pak street"
housenr="420"
zipcode="42000"
city="Nill"
country="Lahore"
kix="" />

这是我编写的代码:

public static string Transform(XmlDocument doc, XmlDocument stylesheet)
{
var transform = new System.Xml.Xsl.XslCompiledTransform();
XmlDocument domOutput = new XmlDocument();

stylesheet.PreserveWhitespace = false;
transform.Load(stylesheet); // compiled stylesheet

MemoryStream oStream = new MemoryStream();
var writer = new System.IO.StringWriter();

transform.Transform(doc, (XsltArgumentList)null, oStream);

domOutput.Load(oStream);

return writer.ToString();
}

下面的行抛出异常

transform.Transform(doc, (XsltArgumentList)null, oStream);

异常消息:

White space cannot be stripped from input documents that have already been loaded. Provide the input document as an XmlReader instead.

你能告诉我我做错了什么吗?

提前致谢!

最佳答案

我解决了。实际上“XslCompiledTransform.Transform”将XmlReader作为第一个参数,我在第一个参数中传递XmlDocument。 这是代码。

public static string Transform(XmlDocument doc, XmlDocument stylesheet)
{
try
{
System.Xml.Xsl.XslCompiledTransform transform = new System.Xml.Xsl.XslCompiledTransform();
transform.Load(stylesheet); // compiled stylesheet
System.IO.StringWriter writer = new System.IO.StringWriter();
XmlReader xmlReadB = new XmlTextReader(new StringReader(doc.DocumentElement.OuterXml));
transform.Transform(xmlReadB, null, writer);
return writer.ToString();
}
catch (Exception ex)
{
throw ex;
}

}

关于c# - 无法从已加载的输入文档中删除空格。将输入文档提供为 XmlReader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15548147/

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