XML StringWriter为空 [英] XML StringWriter empty

查看:95
本文介绍了XML StringWriter为空的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在XMLDocument中有一些XML,我想将其放入StringWriter中,但是它总是变成空(?).我曾尝试用debug检查变量,但是对于发生的事情我仍然一无所知.

I have some XML in a XMLDocument and I want to put it into a StringWriter, but it always becomes empty(?) instead. I've tried inspecting the variables with debug, but I'm still clueless as to what's going on.

这就是我所拥有的:

        XmlDocument xmlInput = new XmlDocument();
        /* after this executes, xmlInput has lots of data in it */  
        xmlInput.LoadXml(...); 

        XslCompiledTransform transform = new XslCompiledTransform();
        /* I'm pretty sure Template.xslt is being found and loaded correctly */
        transform.Load(Server.MapPath("/Files/Template.xslt")); 

        using (System.IO.StringWriter sb = new System.IO.StringWriter())
        {
            XmlWriterSettings xSettings = new XmlWriterSettings();
            xSettings.ConformanceLevel = ConformanceLevel.Fragment;
            xSettings.Encoding = Encoding.UTF8;
            /* PROBLEM: After this line, StringWriter sb is {} */
            using (XmlWriter xWriter = XmlWriter.Create(sb, xSettings))
            {
                transform.Transform(xmlInput, xWriter);
            }

            /* xmlText is empty string "" after this line */
            String xmlText = sb.ToString();

            /* ... does more stuff ... */
        }

我可以帮忙吗?我真的不确定从哪里可以开始工作.

Can I have some help? I'm really not sure where to go from here to get this working.

更多调查:

        using (var stringWriter = new StringWriter())
        {
            using (var xmlTextWriter = XmlWriter.Create(stringWriter))
            {
                /* Prints lots of data to the screen */
                Response.Write(xmlInput.InnerXml);

                xmlInput.WriteTo(xmlTextWriter);
                /* Doesn't print anything to the screen */
                Response.Write(stringWriter.GetStringBuilder().ToString() );
            }
        }

但是,冲洗可以解决问题

BUT, flushing does the trick

                xmlInput.WriteTo(xmlTextWriter);
                xmlTextWriter.Flush();
                /* prints lots of data */
                Response.Write( stringWriter.GetStringBuilder().ToString() );

推荐答案

事实证明,我尝试应用的XSLT文件要求将XML包装在某个元素中.

It turns out that the XSLT file I was trying to apply required the XML to be wrapped in a certain element.

但是flush()技巧很有帮助.

这篇关于XML StringWriter为空的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆