1

我的目标是通过一些 xsl 将原始 xml 文件转换为具有 utf-8 编码的目标。这是带有以下标头的原始 xml 文件:

 <?xml version='1.0' encoding='ISO-8859-1'?>

我正在使用 xsl 将其转换为另一个 xml 文件。xsl 文件具有以下标头:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns="http://www.w3.org/1999/xhtml" 
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
                version="1.0" 
                xmlns:xalan="http://xml.apache.org/xalan" 
                exclude-result-prefixes="xalan">
<xsl:output method="xml" 
            encoding="UTF-8" 
            indent="yes" 
            xalan:indent-amount="4"/>

这是 C# 代码:

  XPathDocument myXPathDoc = new XPathDocument(FileName);
  XslCompiledTransform myXslTrans = new XslCompiledTransform();
  myXslTrans.Load("C:/test/test.xsl");
  XmlTextWriter myWriter = new XmlTextWriter(destinationFile, Encoding.UTF8);
  myWriter.Formatting = Formatting.Indented;
  myWriter.Indentation = 4;

   myXslTrans.Transform(myXPathDoc, null, myWriter);
   myWriter.Close();

这个的输出是我在destinationfile 得到一个乱码的阿拉伯文本。如何让它阅读正确的阿拉伯语文本。

编辑,问题 2:

原始 XML 文件缺少结束根/子标记。如何编辑此 xml 以包含这些内容。

例如原始 xml 文件,缺少 aaaa 和 nnnn 的关闭。如何使用 C# 进行编辑以获取它们。

<aaaa>
<nnnn)
<rrrr>
</rrrr>
4

1 回答 1

2

如果您的原始 XML 文件包含阿拉伯字符,则其 XML 声明是谎言 - 该文件不是encoding="ISO-8859-1"因为该编码不能代表阿拉伯语。

如果您可以确定原始文件真正XPathDocument使用的编码,您可以通过使用采用 aTextReader而不是采用文件名的构造函数来强制以该编码读取文件。对于阿拉伯语,编码可能是 Windows-1256。

于 2013-04-03T10:54:42.757 回答