Больше проблем с XML - необъявленная сущность 'nbsp' - PullRequest
1 голос
/ 12 мая 2010

Я получаю сообщение об ошибке:

Строка 49: xml = r.ReadToEnd (); Строка 50: Строка 51: System.Xml.Linq.XDocument xmlDoc = System.Xml.Linq.XDocument.Parse (xml); Строка 52:
Строка 53: var query = из p в xmlDoc.Descendants ("member")

В моем XML. Когда я запускаю код для генерации XML на пустой странице, он запускается без ошибок, и если я вызываю код на своей веб-странице, он выдает эту ошибку. Единственное nbsp на странице - это объявление типа документа в верхней части XSLT:

<!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp "&#x00A0;"> ]>

Я в недоумении, откуда эта ошибка, и я ищу предложения, пожалуйста!

Спасибо.

Вот код C #, который извлекает XML:

protected void exportList(Object sender, EventArgs e)
    {
        String gid;
        gid = Request.QueryString["gid"].ToString();
        //XElement xml = XElement.Load("/members/listmembersxmlfeed?gid=" + gid);

        String xml = String.Empty;

        System.Net.WebResponse WR = System.Net.WebRequest.Create(Request.Url + "/members/listmembersxmlfeed?gid=" + gid).GetResponse();

        System.IO.StreamReader r = new System.IO.StreamReader(WR.GetResponseStream());
        xml = r.ReadToEnd();

        System.Xml.Linq.XDocument xmlDoc = System.Xml.Linq.XDocument.Parse(xml);

            var query = from p in xmlDoc.Descendants("member")
                    select new
                    {
                        Name = p.Element("name").Value,
                        Email = p.Element("email").Value
                    };

            foreach (var member in query)
            {
                    Response.Write("Employee: " + member.Name + " " + member.Email + "<br />");
            }
    }

Надеюсь, эта помощь.

Ответы [ 2 ]

8 голосов
/ 12 мая 2010

Ваш XML-документ должен иметь DTD, объявляющий @nbsp; лицо

<!DOCTYPE topElementName [ <!ENTITY nbsp "&#x00A0;"> ]> 

В противном случае текст не является правильно оформленным XML-документом (содержит неопределенную сущность), о котором вам сообщит сообщение об ошибке.

Тот факт, что таблица стилей XSLT имеет это объявление, подходит только для таблицы стилей XSLT. Такое объявление также необходимо отдельно для документа XML,

0 голосов
/ 12 мая 2010

Изменено WebRequest.Create на статический URL вместо Request.Uri + "/ listmembersxmlfeed? Gid =" + gid, что решило эту проблему.

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