Остановить строки кодирования URL XDocument - PullRequest
0 голосов
/ 04 марта 2010

Я пытаюсь создать XML-файл, соответствующий кому-то XSD, этот XSD допускает содержание XHTML в своем теге описания. Я сократил иерархию методов, но в основном это делает следующее:

using System.Xml.Linq;

public static XDocument Create()
    {            
        XDocument doc = new XDocument(
          new XDeclaration("1.0", Encoding.UTF8.HeaderName, String.Empty),
            GetCourses()
            );

        //ValidatingProcess(@".\xcri_cap_1_1.xsd", doc.ToString());

        return doc;
    }

private static XElement GetCourses(XElement provider)
    {
        //datatbale dt generated here from sql
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            provider.Add(new XElement("course",
                  new XElement("identifier", dt.Rows[i]["QN_ID"]),
                  new XElement("title", dt.Rows[i]["LSC Descriptor"]),
                  new XElement("subject", dt.Rows[i]["category"]),
                  new XElement("description", dt.Rows[i]["Course_Overview"],
                    new XAttribute("Type", "Course Overview")),
                  //new XElement("description", dt.Rows[i]["Entry_Requirements"]),
                    //new XAttribute("Type", "Entry Requirements"),
                  new XElement("description", dt.Rows[i]["Course_Contents"],
                    new XAttribute("Type", "Course Contents")),
                  new XElement("description", dt.Rows[i]["Assessment"],
                    new XAttribute("Type", "Assessment")),
                  new XElement("description", dt.Rows[i]["Progression_Route"],
                    new XAttribute("Type", "Progression Route")),
                  new XElement("url", "http://www.nnc.ac.uk/CourseLeaflets/Leaflet2.aspx?qnid=" + dt.Rows[i]["QN_ID"]),
                    GetQualification(dt.Rows[i])//,
                    //GetPresentation(row)
                    ));
        }

        return provider;
    }

Поля, такие как "Course_Overview", "Entry_Requirements", содержат XHTML без кодирования URL, но при добавлении в XDocument они автоматически кодируются, поэтому я получаю &lt;P&gt; вместо <P>. В любом случае, чтобы остановить это, или я собираюсь использовать что-то вместо XDocument.

Причина, по которой я начал с XDocument, заключается в том, что компоновка кода может выглядеть аналогично конечному результату.

Ответы [ 2 ]

3 голосов
/ 04 марта 2010

Добавление текстового содержимого обрабатывается так, как если бы вы хотели текстовое содержимое, а не «внутренний XML».

Я думаю, вам лучше всего преобразовать строку XML в фрагмент документа, а затем добавить этот фрагмент (по сути, sring необходимо преобразовать в узлы, а затем добавить узлы).

Используйте XElement.Parse для создания фрагмента документа.

1 голос
/ 04 марта 2010

Это правильное поведение.

На самом деле вы хотите проанализировать HTML-код описания и вставить его.Взгляните на XElement.Parse().

Я полагаю, что следующий Социальный вопрос MSDN довольно хорошо решает вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...