我的目标是将原始xml文件通过某些xsl转换为具有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以包含这些内容。
e.g。原始的xml文件,缺少aaaa和nnnn的结束。如何使用C#进行编辑以使其进入。
<aaaa>
<nnnn)
<rrrr>
</rrrr>
答案 0 :(得分:2)
如果您的原始XML文件包含阿拉伯字符,那么其XML声明就在说谎 - 该文件不是encoding="ISO-8859-1"
,因为该编码不能代表阿拉伯语。
如果您可以确定原始文件真正使用的编码,则可以使用XPathDocument
构造函数强制使用TextReader
代替该编码来读取文件采取文件名的那个。对于阿拉伯语,编码可能是Windows-1256。