XML解析错误:加载到浏览器时格式不正确

时间:2015-03-25 23:29:55

标签: c# xml xslt visual-studio-2013

我正在开发一个导入CSV的visual studio项目,并导出一个XML文件。我希望能够使代码以XML和HTML的形式工作,并在浏览器中查看。我将XML文件加载到浏览器时收到此错误:

火狐

  

XML解析错误:格式不正确   位置:file:/// C:/Users/fenwky/XmlDoc.xml
  第2行,第6列:<?xsl:stylesheet <abc:stylesheet xmlns="http://www.w3.org/1999/XSL/Transform" version="1.0">?>

  

此页面包含以下错误:第16行第2行的错误:PI名称'xsl:transform'

禁止冒号

这就是我的c#代码在visual studio 2013中的样子:

// Create a procesing instruction.
XmlProcessingInstruction newPI;

// Stylesheet
String PItext = "<abc:stylesheet xmlns:abc=\"http://www.w3.org/1999/XSL/Transform\" version=\"1.0\">";
newPI = doc.CreateProcessingInstruction("abc:stylesheet", PItext);
doc.InsertAfter(newPI, doc.FirstChild);

// Save document
doc.Save(xmlfilename);

1 个答案:

答案 0 :(得分:1)

如果您尝试在XML中插入处理指令,CreateProcessingInstruction方法的data参数在这种情况下不需要包含处理指令的名称。换句话说,你只需要这样做......

  var PItext = "xmlns:abc=\"http://www.w3.org/1999/XSL/Transform\" version=\"1.0\"";
  var newPI = doc.CreateProcessingInstruction("abc:stylesheet", PItext);
  doc.InsertAfter(newPI, doc.FirstChild);

但是,我想知道为什么要尝试将此特定处理指令添加到XML文档中。也许您的意思是将XML文档链接到单独的XSLT文档,因此如果浏览器读取它将被转换?

如果是这样,你可能需要这样做......

  var piText = "type=\"text/xsl\" href=\"style1.xsl\"";
  var newPI = doc.CreateProcessingInstruction("xml-stylesheet", piText);
  doc.InsertAfter(newPI, doc.FirstChild);

这将向XML写入以下处理指令,然后浏览器可以读取该指令:

<?xml-stylesheet type="text/xsl" href="style1.xsl"?>