您所说的是“之后”,您使用字符串解析,如您在上面看到的结果包含重复声明?
现在我不确定您如何保存您的回复,但这里有一个示例应用程序,它会产生类似的结果。
XDocument doc = XDocument.Parse("<?xml-stylesheet type=\"text/xsl\" href=\"dco.xsl\"?><S><B></B></S>");
doc.Save(Console.OpenStandardOutput());
产生结果:
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="dco.xsl"?>
<S>
<B></B>
</S>
这是你遇到的问题。您需要在保存之前删除 xml 声明。这可以通过在保存 xml 输出时使用 xml 编写器来完成。这是一个示例应用程序,它带有一个扩展方法,可以在没有声明的情况下编写新文档。
class Program
{
static void Main(string[] args)
{
XDocument doc = XDocument.Parse("<?xml-stylesheet type=\"text/xsl\" href=\"dco.xsl\"?><S><B></B></S>");
doc.SaveWithoutDeclaration(Console.OpenStandardOutput());
Console.ReadKey();
}
}
internal static class Extensions
{
public static void SaveWithoutDeclaration(this XDocument doc, string FileName)
{
using(var fs = new StreamWriter(FileName))
{
fs.Write(doc.ToString());
}
}
public static void SaveWithoutDeclaration(this XDocument doc, Stream Stream)
{
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(doc.ToString());
Stream.Write(bytes, 0, bytes.Length);
}
}