保存XML文件而不转换&进入&放大器;

时间:2013-12-22 01:17:08

标签: c# xml

我有一个数据源,我的程序可以从中创建一个格式良好的XML文件,以后应该在xsl文件中使用。

数据源包含乳胶特殊字符。 我正在映射它们并创建本地Entites。

一个例子。

xml数据:

<!DOCTYPE my_entities[...<!ENTITY e228 "&#228;">]...>
  <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&amp;e248;rgensen</editor>
    <publisher>Birkh&amp;e228;user, Boston - Basel - Berlin</publisher>
    <year>1994</year>
  </inproceedings>

<publisher>Birkh&amp;e228;user, Boston - Basel - Berlin</publisher>行应为<publisher>Birkh&e228;user, Boston - Basel - Berlin</publisher>。所以该程序转换了&amp;进入&amp;

我在C#中编写并使用XmlDocument编写xml文件。

如何阻止程序转换&amp;进入&amp;

亲切的问候 马里奥

编辑:我尝试转换xsl中的&amp;,但没有任何效果。

1 个答案:

答案 0 :(得分:0)

首先,我使用十进制代码直接插入实体,而不是使用本地代码尝试。结果是一样的。我得到&amp;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();
    }
}