xml方法之间有什么区别(XML转换)

时间:2011-10-31 16:57:26

标签: c# xml xslt transformation xmldocument

有人可以帮我吗?

我需要使用XSLT将一个XML文档转换为另一个XML文档。

所以我有下一个简单的代码:

 var xmlDocument = new XmlDocument();
    xmlDocument.Load("input.xml");
    var xslTransform = new XslCompiledTransform();
    var styleSheetFullPath = "DefaultStyleSheet.xsl";
    xslTransform.Load(styleSheetFullPath);

输入xml文档如下例所示:

<?xml version="1.0" encoding="utf-8"?>
<Root>
    <Object>
      <GUID>201110180954525010129</GUID>
      <Meta name="FILENAME" format="string" frate="" />
    </Object>
</Root>

我需要将其转换为下一个XML:

<?xml version="1.0" encoding="UTF-8"?>
<Root> 
    <Object> 
        <GUID>201110180954525010129</GUID>
        <FILENAME/> 
    </Object>
</Root>

当我尝试使用下一种方法时效果很好。但是我需要首先将文档写入文件,并且在转换之后我需要reed它。

var fileName = "result.xml";
using (var myWriter = new XmlTextWriter(fileName, null))
{
       xslTransform.Transform(xmlDocument.CreateNavigator(), null, myWriter);
}
var doc = new XmlDocument();
doc.Load(fileName);

但是当我尝试使用下一种方法动态创建XML文档时

        var xmlDocOutput = new XmlDocument();
        var xmlDocOutputDeclaration = xmlDocOutput.CreateXmlDeclaration("1.0", "utf-8", null);
        xmlDocOutput.AppendChild(xmlDocOutputDeclaration);
        using (var xmlWriter = xmlDocOutput.CreateNavigator().AppendChild())
        {
            xslTransform.Transform(xmlDocument.CreateNavigator(), null, xmlWriter);
        }

我得到下一个输出

<?xml version="1.0" encoding="UTF-8"?>
<Root> 
    <Object> 
    <GUID>201110180954525010129</GUID>
        <FILENAME> </FILENAME> 
    </Object>
</Root>

那么我该怎么做才能在元素内容中保留空白区域。

提前致谢

0 个答案:

没有答案