Ошибка при разборе entityname

I have found that there exists "&" in my code that's why error is showing XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(dsExport.Tables[0].Rows[i]["SubmissionData"].ToString()); T...

I have found that there exists "&" in my code that’s why error is showing

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(dsExport.Tables[0].Rows[i]["SubmissionData"].ToString());

The «&» is there in submissiondata . How can I remove the special characters so that the error doesn’t show again ?

Thanks in advance

Microsoft DN's user avatar

Microsoft DN

9,5509 gold badges50 silver badges67 bronze badges

asked Jul 17, 2013 at 14:16

user2265679's user avatar

3

Replace your "&" with "&"

HamZa's user avatar

HamZa

14.5k11 gold badges54 silver badges75 bronze badges

answered Jul 17, 2013 at 14:22

Microsoft DN's user avatar

Microsoft DNMicrosoft DN

9,5509 gold badges50 silver badges67 bronze badges

2

& is not an illegal XML character. This is not your problem. You need to log the XML that you receive, before you ask anyone about your problem. You probably need to

HTTPUtility.HTMLDecode(yourformdata)

But I smell SQL injection a long way.

answered Jul 17, 2013 at 14:27

Pål Thingbø's user avatar

Pål ThingbøPål Thingbø

1,1711 gold badge16 silver badges17 bronze badges

2

Try:

XmlDocument xmlDoc = new XmlDocument();
string str  = dsExport.Tables[0].Rows[i]["SubmissionData"].ToString();
str = System.Web.HTTPUtility.HTMLDecode(str);
xmlDoc.LoadXml(str);

answered Jul 17, 2013 at 14:38

Pål Thingbø's user avatar

Pål ThingbøPål Thingbø

1,1711 gold badge16 silver badges17 bronze badges

4

Sorry I am replying too late but I hope it will help some other guys. This issue is because of the encoding of special characters in XML. Please find the below link which may help you https://support.google.com/checkout/sell/answer/70649?hl=en
Thanks,
Vijay Sherekar

answered Oct 24, 2013 at 12:29

Vijay's user avatar

I have found that there exists "&" in my code that’s why error is showing

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(dsExport.Tables[0].Rows[i]["SubmissionData"].ToString());

The «&» is there in submissiondata . How can I remove the special characters so that the error doesn’t show again ?

Thanks in advance

Microsoft DN's user avatar

Microsoft DN

9,5509 gold badges50 silver badges67 bronze badges

asked Jul 17, 2013 at 14:16

user2265679's user avatar

3

Replace your "&" with "&"

HamZa's user avatar

HamZa

14.5k11 gold badges54 silver badges75 bronze badges

answered Jul 17, 2013 at 14:22

Microsoft DN's user avatar

Microsoft DNMicrosoft DN

9,5509 gold badges50 silver badges67 bronze badges

2

& is not an illegal XML character. This is not your problem. You need to log the XML that you receive, before you ask anyone about your problem. You probably need to

HTTPUtility.HTMLDecode(yourformdata)

But I smell SQL injection a long way.

answered Jul 17, 2013 at 14:27

Pål Thingbø's user avatar

Pål ThingbøPål Thingbø

1,1711 gold badge16 silver badges17 bronze badges

2

Try:

XmlDocument xmlDoc = new XmlDocument();
string str  = dsExport.Tables[0].Rows[i]["SubmissionData"].ToString();
str = System.Web.HTTPUtility.HTMLDecode(str);
xmlDoc.LoadXml(str);

answered Jul 17, 2013 at 14:38

Pål Thingbø's user avatar

Pål ThingbøPål Thingbø

1,1711 gold badge16 silver badges17 bronze badges

4

Sorry I am replying too late but I hope it will help some other guys. This issue is because of the encoding of special characters in XML. Please find the below link which may help you https://support.google.com/checkout/sell/answer/70649?hl=en
Thanks,
Vijay Sherekar

answered Oct 24, 2013 at 12:29

Vijay's user avatar

Я читаю строку XML с помощью XDocument

XmlReader reader = XmlReader.Create(new StringReader(xmltext));
        reader.Read();
        XDocument xdoc = XDocument.Load(reader);

Затем я беру содержимое некоторых тегов и помещаю их в теги в другой строке. Когда я пытаюсь загрузить эту строку так же, как и с первой, я получаю сообщение об ошибке «Произошла ошибка при разборе EntityName. Строка 1, позиция 344».

Я думаю, что он должен быть проанализирован правильно, так как он был проанализирован раньше, поэтому я думаю, что здесь что-то упустил.

Я читаю и копирую содержимое первого XML с помощью (string)i.Element("field").

Я использую .net 4

3 ответы

Когда я беру содержимое xml, которое хочу использовать для создания другой строки Xml, я использую (string)i.Element("field") и это преобразует мой Xml в строку. Мой следующий синтаксический анализ Xml больше не распознает его как элемент, поэтому я решил проблему, не используя (строку), прежде чем я прочитаю свой элемент, просто i.Element("field") и это работает.

ответ дан 07 авг.

Похоже, у вас есть что-то вроде этого:

<OriginalDocument>
    <Foo>A &amp; B</Foo>
</OriginalDocument>

То, что A &amp; B представляет текст A & B. Поэтому, когда вы берете текст из элемента, вы получите строку «A & B». Если вы затем используете это для создания нового элемента, подобного этому:

string foo = "<Foo>" + fooText + "</Foo>";

то вы получите недопустимый XML, например:

<Foo>A & B</Foo>

По сути, вы не должны создавать XML в текстовой форме. Непонятно, чего вы на самом деле пытаетесь достичь, но вы можете довольно легко скопировать элемент из одного места в другое в XElement форма; вам не нужно создавать строку, а затем повторно анализировать ее.

ответ дан 07 авг.

Итак, потратив несколько часов на эту проблему: оказывается, что если у вас есть символ амперсанда («&») или любые другие escape-символы XML в вашей строке xml, он всегда будет терпеть неудачу, если вы попытаетесь прочитать XML. ЧТОБЫ решить эту проблему, замените специальные символы их экранированным строковым форматом.

 YourXmlString = YourXmlString.Replace("'", "&apos;").Replace(""", "&quot;").Replace(">", "&gt;").Replace("<", "&lt;").Replace("&", "&amp;");

Создан 01 ноя.

Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками

c#
linq-to-xml

or задайте свой вопрос.

I have a function where I am passing a string as params called filterXML which contains ‘&’ in one of the properties.

I know that XML will not recognize it and it will throw me an err. Here is my code:

 public XmlDocument TestXMLDoc(string filterXml)
{
    XmlDocument doc = new XmlDocument();
    XmlNode root = doc.CreateElement("ResponseItems");

    // put that root into our document (which is an empty placeholder now)
    doc.AppendChild(root);

    try
    {
        XmlDocument docFilter = new XmlDocument();
        docFilter.PreserveWhitespace = true;

        if (string.IsNullOrEmpty(filterXml) == false)
            docFilter.LoadXml(filterXml); //ERROR THROWN HERE!!!

What should I change in my code to edit or parse filterXml? My filterXml looks like this:

<Testing>
<Test>CITY & COUNTY</Test>
</Testing>

I am changing my string value from & to &. Here is my code for that:

string editXml = filterXml;
    if (editXml.Contains("&"))
    {
        editXml.Replace('&', '&amp;');
    }

But its giving me an err on inside the if statement : Too many literals.

asked Oct 3, 2011 at 17:57

RG-3's user avatar

RG-3RG-3

6,00819 gold badges68 silver badges125 bronze badges

2

The file shown above is not well-formed XML because the ampersand is not escaped.

You can try with:

<Testing>
  <Test>CITY &amp; COUNTY</Test>
</Testing>

or:

<Testing>
  <Test><![CDATA[CITY & COUNTY]]></Test>
</Testing>

answered Oct 3, 2011 at 18:01

Ghislain Fourny's user avatar

Ghislain FournyGhislain Fourny

6,9011 gold badge29 silver badges37 bronze badges

3

About the second question: there are two signatures for String.Replace. One that takes characters, the other that takes strings. Using single quotes attempts to build character literals — but «&amp;», for C#, is really a string (it has five characters).

Does it work with double quotes?

editXml.Replace("&", "&amp;");

If you would like to be a bit more conservative, you could also write code to ensure that the &s you are replacing are not followed by one of

amp; quot; apos; gt; lt; or #

(but this would still not be a perfect filtering)

answered Oct 3, 2011 at 18:27

Ghislain Fourny's user avatar

Ghislain FournyGhislain Fourny

6,9011 gold badge29 silver badges37 bronze badges

To specify an ampersand in XML you should use &amp; since the ampersand sign (‘&’) has a special meaning in XML.

answered Oct 3, 2011 at 18:02

DeCaf's user avatar

DeCafDeCaf

5,9761 gold badge27 silver badges50 bronze badges

I have a function where I am passing a string as params called filterXML which contains ‘&’ in one of the properties.

I know that XML will not recognize it and it will throw me an err. Here is my code:

 public XmlDocument TestXMLDoc(string filterXml)
{
    XmlDocument doc = new XmlDocument();
    XmlNode root = doc.CreateElement("ResponseItems");

    // put that root into our document (which is an empty placeholder now)
    doc.AppendChild(root);

    try
    {
        XmlDocument docFilter = new XmlDocument();
        docFilter.PreserveWhitespace = true;

        if (string.IsNullOrEmpty(filterXml) == false)
            docFilter.LoadXml(filterXml); //ERROR THROWN HERE!!!

What should I change in my code to edit or parse filterXml? My filterXml looks like this:

<Testing>
<Test>CITY & COUNTY</Test>
</Testing>

I am changing my string value from & to &. Here is my code for that:

string editXml = filterXml;
    if (editXml.Contains("&"))
    {
        editXml.Replace('&', '&amp;');
    }

But its giving me an err on inside the if statement : Too many literals.

asked Oct 3, 2011 at 17:57

RG-3's user avatar

RG-3RG-3

6,00819 gold badges68 silver badges125 bronze badges

2

The file shown above is not well-formed XML because the ampersand is not escaped.

You can try with:

<Testing>
  <Test>CITY &amp; COUNTY</Test>
</Testing>

or:

<Testing>
  <Test><![CDATA[CITY & COUNTY]]></Test>
</Testing>

answered Oct 3, 2011 at 18:01

Ghislain Fourny's user avatar

Ghislain FournyGhislain Fourny

6,9011 gold badge29 silver badges37 bronze badges

3

About the second question: there are two signatures for String.Replace. One that takes characters, the other that takes strings. Using single quotes attempts to build character literals — but «&amp;», for C#, is really a string (it has five characters).

Does it work with double quotes?

editXml.Replace("&", "&amp;");

If you would like to be a bit more conservative, you could also write code to ensure that the &s you are replacing are not followed by one of

amp; quot; apos; gt; lt; or #

(but this would still not be a perfect filtering)

answered Oct 3, 2011 at 18:27

Ghislain Fourny's user avatar

Ghislain FournyGhislain Fourny

6,9011 gold badge29 silver badges37 bronze badges

To specify an ampersand in XML you should use &amp; since the ampersand sign (‘&’) has a special meaning in XML.

answered Oct 3, 2011 at 18:02

DeCaf's user avatar

DeCafDeCaf

5,9761 gold badge27 silver badges50 bronze badges

I have written some code to parse RSS feeds for a ASP.NET C# application and it works fine for all RSS feeds that I have tried, until I tried Facebook.

My code fails at the last line below…

WebRequest request = WebRequest.Create(url);
WebResponse response = request.GetResponse();
Stream rss = response.GetResponseStream();
XmlDocument xml = new XmlDocument();
xml.Load(rss);

…with the error «An error occurred while parsing EntityName. Line 12, position 53.»

It is hard to work out what is at thhat position of the XML file as the entire file is all in one line, but it is straight from Facebook and all characters appear to be encoded properly except possibly one character (♥).

I don’t particularly want to rewrite my RSS parser to use a different method. Any suggestions for how to bypass this error? Is there a way of turning off checking of the file?

John Saunders's user avatar

John Saunders

160k26 gold badges241 silver badges394 bronze badges

asked Sep 26, 2011 at 8:22

johna's user avatar

3

Look at the downloaded stream. It doesn’t contain the RSS feed, but a HTML page with message about incompatible browser. That’s because when downloading the URL like this, the user agent header is not set. If you do that, your code should work:

var request = (HttpWebRequest)WebRequest.Create(url);
request.UserAgent = "MyApplication";

var xml = new XmlDocument();

using (var response = request.GetResponse())
using (var rss = response.GetResponseStream())
{
    xml.Load(rss);
}

answered Sep 26, 2011 at 13:07

svick's user avatar

svicksvick

233k50 gold badges385 silver badges509 bronze badges

0

I have written some code to parse RSS feeds for a ASP.NET C# application and it works fine for all RSS feeds that I have tried, until I tried Facebook.

My code fails at the last line below…

WebRequest request = WebRequest.Create(url);
WebResponse response = request.GetResponse();
Stream rss = response.GetResponseStream();
XmlDocument xml = new XmlDocument();
xml.Load(rss);

…with the error «An error occurred while parsing EntityName. Line 12, position 53.»

It is hard to work out what is at thhat position of the XML file as the entire file is all in one line, but it is straight from Facebook and all characters appear to be encoded properly except possibly one character (♥).

I don’t particularly want to rewrite my RSS parser to use a different method. Any suggestions for how to bypass this error? Is there a way of turning off checking of the file?

John Saunders's user avatar

John Saunders

160k26 gold badges241 silver badges394 bronze badges

asked Sep 26, 2011 at 8:22

johna's user avatar

3

Look at the downloaded stream. It doesn’t contain the RSS feed, but a HTML page with message about incompatible browser. That’s because when downloading the URL like this, the user agent header is not set. If you do that, your code should work:

var request = (HttpWebRequest)WebRequest.Create(url);
request.UserAgent = "MyApplication";

var xml = new XmlDocument();

using (var response = request.GetResponse())
using (var rss = response.GetResponseStream())
{
    xml.Load(rss);
}

answered Sep 26, 2011 at 13:07

svick's user avatar

svicksvick

233k50 gold badges385 silver badges509 bronze badges

0

Я обнаружил, что в моем коде существует "&", почему ошибка показывает

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(dsExport.Tables[0].Rows[i]["SubmissionData"].ToString());

«&» есть в представлении данных. Как удалить специальные символы, чтобы ошибка не отображалась снова?

Заранее спасибо

17 июль 2013, в 17:15

Поделиться

Источник

4 ответа

Microsoft DN
17 июль 2013, в 12:00

Поделиться

Try:

XmlDocument xmlDoc = new XmlDocument();
string str  = dsExport.Tables[0].Rows[i]["SubmissionData"].ToString();
str = System.Web.HTTPUtility.HTMLDecode(str);
xmlDoc.LoadXml(str);

Pål Thingbø
17 июль 2013, в 12:49

Поделиться

& не является незаконным символом XML. Это не ваша проблема. Вам нужно зарегистрировать полученный XML-код, прежде чем вы спросите кого-нибудь о вашей проблеме. Вероятно, вам нужно

HTTPUtility.HTMLDecode(yourformdata)

Но я очень хорошо чувствую SQL-инъекцию.

Pål Thingbø
17 июль 2013, в 12:11

Поделиться

Извините, я слишком поздно отвечаю, но надеюсь, что это поможет некоторым другим парням. Эта проблема связана с кодировкой специальных символов в XML. Пожалуйста, найдите приведенную ниже ссылку, которая может вам помочь https://support.google.com/checkout/sell/answer/70649?hl=en
Благодаря,
Виджай Шерекар

Vijay
24 окт. 2013, в 10:00

Поделиться

Ещё вопросы

  • 0Добавить класс в несколько div в зависимости от события клика
  • 0Реализация где не в использовании Eloquent моделей не работает
  • 1УРОВЕНЬ УРОВНЯ Дерева с Явой
  • 0Кендо У.И. Грид, Дюрандаль
  • 0Android: fromhtml оставляет детали шрифта в строке
  • 0Предупреждение: mysql_result () [function.mysql-result]: невозможно перейти к строке -1
  • 0Почему onmouseover и onclick не будут работать вместе, устанавливая стили div, и как сбросить стили набора onclick, не теряя onmouseover?
  • 0Уровни изоляции MySQL в nodejs. Каждый запрос в соединении изолирован или каждый пул изолирован?
  • 0Голос за кадром в iOS для диапазона слайдера с вертикальным типом ввода неверно отображает пролистывание влево и вправо
  • 0Горизонтальный Div Inside Inside Loop, показывающий те же продукты PHP
  • 1Конвертировать карту лямбда в список понимания
  • 1Сохранить переменную в постбэках, но очистить / не сохранить на странице выхода
  • 1Тензор имеет форму [?, 0] — как изменить форму на [?,]
  • 5Керас не использует полноценные ядра процессора для обучения
  • 0AngularJS: передать функцию видимости в директиву внутри объекта JSN
  • 1Апплет не начнет использовать апплет-бегун из Intellij Idea
  • 1Python3 — Проблемы с определением типа объекта
  • 0Использование переменных в JavaScript для динамической ссылки на элементы HTML
  • 0Можно ли иметь, если еще в HTTP-запрос в угловых JS?
  • 1Нужно ли использовать threadPool.awaitTermination after future.get ();
  • 0Попытка выяснить, есть ли лучший способ структурировать этот запрос с помощью объединений
  • 1paginator угловой 2 материала получить индекс текущей страницы
  • 1Импортировать строку CSV в DICT?
  • 1Изображение Java после моего курсора
  • 1ListView и изображения
  • 0Почему мое приложение MFC удаляется без сообщения, даже когда оно открыто / работает?
  • 0частота обновления для уникального идентификатора продукта каждым пользователем
  • 0Всплывающее окно Angularjs oauth, дождитесь ответа JSON
  • 1SurfaceView отображает подачу камеры в сторону
  • 1Как проверить, пуста ли строка сетки данных?
  • 1как включить служебные классы в Eclipse (Android-программирование)
  • 1Как мы можем заставить пользователя вводить значения без использования обязательного позиционного аргумента при вызове функции в Python?
  • 1смещение ширины графика при прокрутке
  • 1Как заработать очки, а затем добавить их все
  • 0Как мне преобразовать cv :: Mat в cv :: Rect
  • 0Как создать селектор jquery на основе другого селектора?
  • 0preg_replace с preg_quote кроме одного столбца
  • 0Отображение массива ошибок структуры / класса C ++
  • 0Группировать по родителю, но не по ребенку
  • 0Как добавить переменную в путь push-функции в Angular?
  • 0Угловой ‘orderBy’ не работает со сложными опциями ng
  • 0Mysql Collation проблема для многоязычной концепции
  • 0(function ($) {// Некоторый код}) (jQuery); [Дубликат]
  • 1Найти преобразование в случайную величину X из Uniform (0, 1) с помощью SymPy
  • 1customScript.js: 1 Uncaught ReferenceError: $ не определено
  • 1IntelliJ Идея JPA сущностей в src / test /
  • 1Удалить записи из файла свойств
  • 1Я не могу нажимать кнопки в Firefox при редактировании <body> страницы
  • 1Найти все слова, которые не имеют конкретного символа до
  • 0Конвертировать HTML-код в код ActionScript

Сообщество Overcoder

22.01.2018, 14:41. Показов 1605. Ответов 2


Здравствуйте, есть проблема при парсинге Xml файла при помощи класса XmlTextReader ругается на одиночные — «&» в файле Xmk, ошибка следующего содержания » Ошибка при разборе EntityName., строка 131, позиция 1305.» (указывает на позицию этого амперсанда) как быть, подскажите, вот код

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 static void Main(string[] args)
        {
            string k = "";
            XmlTextReader reader = new XmlTextReader(@"Data.Xml");
            StreamWriter ZApic = new StreamWriter ("C:\1\Dannie2.txt");
            while (reader.Read())
            {
                if (reader.Name == "Title" || reader.Name == "FullDescription" || reader.Name == "LocationRaw" || reader.Name == "LocationNormalized" || reader.Name == "ContractType" || reader.Name == "ContractTime" || reader.Name == "Company" || reader.Name == "Category" || reader.Name == "SourceName")
                {
                    k = k + (reader.ReadString() == "" ? "Null," : Regex.Replace(reader.ReadString().ToLower(), @"[&]*", "") + ",");
                }
                else if (reader.Name == "SalaryNormalized" || reader.Name == "Phone")
                {
                    k = k + (reader.ReadString() == "" ? "Null," : Regex.Replace((reader.ReadString()).ToLower(), @"[^0-9]*", "") + ",");
                }
                else if (reader.Name == "Email")
                {
                    k=k + (reader.ReadString() == "" ? "Null," : Regex.Match(reader.ReadString().ToLower(), @"[w]*[@]{1}[.]{1}[a-z]") + ",");
                }
                if (reader.IsStartElement("Vacancy") == true)
                {
                    ZApic.WriteLine(k);
                    k = "";
                }

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Понравилась статья? Поделить с друзьями:
  • Ошибка при синтаксическом анализе файла ворд
  • Ошибка при разблокировке загрузчика xiaomi please use the common user tool on the official website
  • Ошибка при синтаксическом анализе файла андроид на телефоне
  • Ошибка при прошивке через odin пишет fail
  • Ошибка при синтаксическом анализе текста андроид как исправить