我有一个数据源,我的程序可以从中创建一个格式良好的XML文件,以后应该在xsl文件中使用。
数据源包含乳胶特殊字符。 我正在映射它们并创建本地Entites。
一个例子。
xml数据:
<!DOCTYPE my_entities[...<!ENTITY e228 "ä">]...>
<inproceedings id="Abadie:94">
<author>B. Abadie</author>
<title>{''Vector bundles'' over quantum Heisenberg manifolds}</title>
<booktitle>Algebraic Methods in Operator Theory</booktitle>
<editor>R. Curto and P. E. T. J&e248;rgensen</editor>
<publisher>Birkh&e228;user, Boston - Basel - Berlin</publisher>
<year>1994</year>
</inproceedings>
第<publisher>Birkh&e228;user, Boston - Basel - Berlin</publisher>
行应为<publisher>Birkh&e228;user, Boston - Basel - Berlin</publisher>
。所以该程序转换了&amp;进入&
。
我在C#中编写并使用XmlDocument编写xml文件。
如何阻止程序转换&amp;进入&
?
亲切的问候 马里奥
编辑:我尝试转换xsl中的&
,但没有任何效果。
答案 0 :(得分:0)
首先,我使用十进制代码直接插入实体,而不是使用本地代码尝试。结果是一样的。我得到&code;
而不是&code;
static void Create_Filled_XML() {
XmlDocument doc = new XmlDocument();
doc.XmlResolver = null;
try {
string docType = "";
foreach(KeyValuePair<string, DocEntity> pair in CommandMapper.SymbolMap)
docType += pair.Value.GetEntityString();
XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "UTF-8", null);
XmlDocumentType myDocType = doc.CreateDocumentType("my_entities", null, null, docType);
XmlProcessingInstruction xslStyle = doc.CreateProcessingInstruction("xml-stylesheet", "type=\"text/xsl\" href=\"03_bibtex.xsl\"");
XmlNode root = doc.CreateElement("bibtext");
foreach(BibElement bib in bibtex) {
root.AppendChild(bib.GetXml(doc));
}
doc.AppendChild(dec);
doc.AppendChild(myDocType);
doc.AppendChild(xslStyle);
doc.AppendChild(root);
doc.Save(@"...\file.xml");
} catch(Exception ex) {
Console.WriteLine();
}
}