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

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,04819 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,9511 gold badge30 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,9511 gold badge30 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

6,0061 gold badge28 silver badges51 bronze badges

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 "&amp;"

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 "&amp;"

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

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

<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:1Dannie2.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

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

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как использовать show () и hide () с задержкой ()?
  • 0Обновление с объединением с условиями из другой таблицы [MySQL]
  • 1Проверьте, сколько элементов из списка pandas daframe содержится в столбце
  • 0Как удалить файл из папки с помощью codeigniter
  • 1Шифрование сообщений чата, хранящихся в базе данных Firebase
  • 0Как передать выбранное выпадающее значение в ng-repeat orderby
  • 1Как вручную добавить установщик в службу Windows?
  • 1Каков наиболее эффективный способ суммирования слова с несколькими ключами одним ключом?
  • 1отображать справку, если неверно или опция миссии в клике
  • 0Как написать тестовый модуль для сервиса, который возвращает обещание
  • 1Node.js fs.writeFile: err возвращает ноль
  • 0AngularFire & Ionic — форма данных не передается на сервер
  • 0заменить оператор new на malloc
  • 1Больше информации об ошибке + более длинная программа или меньше информации об ошибке + более короткая программа?
  • 0Факториальная сумма цифр (без BigInt) C ++
  • 0кодирование значения объекта в функции ng-click
  • 0настройка типа ввода в ng-repeat
  • 0Почему, когда я пытаюсь скрыть свой треугольник CSS с помощью jQuery, добавив класс, это не работает?
  • 1Привязка Vue переопределяет атрибут элемента
  • 0Как открыть вторичную ссылку IFRAME на Первичную ссылку IFRAME?
  • 1Как удалить выбранные строки из фрейма данных при условии
  • 1Как заставить entrySet () показывать пары ключ-значение на новой строке? (Java)
  • 0API для запроса REST от NodeJS к бэкэнду
  • 1Как использовать Loop для выполнения процедуры хранения в Cosmos-DB / Document-DB?
  • 0Как я могу разработать мобильное веб-приложение с использованием Visual Studio 2012 и jquery с asp.net MVC
  • 0PHP Alter Base64 Кодировка изображения
  • 1Есть ли быстрые альтернативы для функции TextureView.getBitmap ()?
  • 1Составление листа Excel с использованием Python и Matplotlib?
  • 1Vue.js + Require.js расширяющий родительский
  • 0ошибка: нет соответствующей функции для вызова const
  • 0MySQL — объединить строку со следующими N меньшими строками
  • 0Как передать структуру каталога в директиву ng-file-upload в браузере Chrome?
  • 0Добавить одноэлементную функцию в класс Pimpl
  • 0Ошибки округления, дающие неправильные тесты в DFT?
  • 0C ++ SWIG генерирует код в зависимости от Tcl
  • 0Ошибка MySQL 1215: невозможно добавить ограничение внешнего ключа для типа данных геометрии POINT
  • 0jquery динамически перемещает строки с помощью .on
  • 1Загрузите текстовый файл cookie в Python
  • 0Неопределенная ссылка — CodeBlocks
  • 0Как проверить, если сегодняшняя дата = дата из sql?
  • 0Почему мой jQuery не меняет цвет фона моего div с изменением анимации?
  • 0HTML5 и PHP: Воспроизведение видеофайла в формате base64
  • 0Удалить escape-последовательности из разобранного HTML
  • 0Как перенести введенные значения ng-модели в таблицу в Angular?
  • 1Чтение XML-файла из определенных тегов
  • 1Как завершить приложение, когда оно уходит в фоновом режиме
  • 1com.ibm.db2.jcc.am.SqlException: [jcc] [10120] [11936] [4.14.88] Недопустимая операция: Lob закрыт. ERRORCODE = -4470, SQLSTATE = null
  • 0Страница открыта с использованием загрузки jQuery с неверными путями к изображениям
  • 1Вызовите API Genderize.io из C #
  • 1Сохранение файлового объекта с помощью matplotlib savefig, создание tar-файла из нескольких рисунков SVG

Сообщество Overcoder

I have got the following exception from the below code block.

An error occurred while parsing EntityName. Line1, position 844.

I was trying to parse s set of data retrieved from table to a data set.

public DataSet BindMasterData(string xml)
        {
            DataSet ds = null;
            try
            {
                ds = new DataSet();
                TextReader txtReader = new StringReader(xml);
                XmlReader reader = new XmlTextReader(txtReader);
                ds.ReadXml(reader);
            }
            catch (Exception ex)
            {
                return new DataSet();
            }
            return ds;
        }

I have figured out the reason for the exception, but I couldn’t solve it. In this particular situation, the string(which is retrieved from DB) contains a special character (&). That causes exception. How I can solve it. Any help on this would be great.

Luke Girvin's user avatar

Luke Girvin

13.2k9 gold badges63 silver badges84 bronze badges

asked May 8, 2014 at 12:33

Sebastian Xavier's user avatar

Sebastian XavierSebastian Xavier

2,4597 gold badges27 silver badges41 bronze badges

2

Just replace them:

Not valid in XML elements:

"   &quot;
'   &apos;
<   &lt;
>   &gt;
&   &amp;

  public static string UnescapeXMLValue(string xmlString)
  {
    if (xmlString == null)
        throw new ArgumentNullException("xmlString")
    
    return xmlString.Replace("&apos;", "'").Replace("&quot;", """).Replace("&gt;", ">").Replace("&lt;", "<").Replace("&amp;", "&");
  }
 
 public static string EscapeXMLValue(string xmlString)
  {

    if (xmlString == null)
        throw new ArgumentNullException("xmlString")

    return xmlString.Replace( "&","&amp;").Replace("'","&apos;").Replace( """, "&quot;").Replace(">","&gt;").Replace( "<","&lt;");
  }

Siddhant's user avatar

Siddhant

1,06412 silver badges22 bronze badges

answered May 8, 2014 at 12:43

Bassam Alugili's user avatar

Bassam AlugiliBassam Alugili

16.1k7 gold badges52 silver badges70 bronze badges

4

This has already been answered, but found a nicer way of achieving the same outcome by doing this in .NET 4.5 by using the Escape method as below:

var xmlWithEscapedCharacters = SecurityElement.Escape(xmlWithoutEscapedCharacters);

and then just plug that string into the XML that is being generated.

Link: MSDN — SecurityElement.Escape Method

answered Dec 18, 2014 at 9:10

Alastair's user avatar

1

If your XML is being constructed with string concatenation then you’ll be wanting to escape it.
& should become &amp; while < and > should become &lt; and &gt; respectively.

There may be others too.
Of course you should really use a proper XML encoder rather than trying to do it yourself for many reasons.

answered May 8, 2014 at 12:37

DJL's user avatar

DJLDJL

2,0613 gold badges19 silver badges38 bronze badges

As the data comes from some data base, the problem can be hot-fixed in the context you described, but I would strongly recommend a different approach. The ampersand symbol should not have occured in the xml in the first place, as discussed here. Please clarify how the xml is generated and address the problem there.

Community's user avatar

answered May 8, 2014 at 12:51

Codor's user avatar

CodorCodor

17.4k9 gold badges29 silver badges56 bronze badges

Blue's user avatar

Blue

22.5k7 gold badges61 silver badges90 bronze badges

answered Jan 30, 2018 at 13:14

Pavan Joshi's user avatar

1

Symptoms

Your JIRA application fails to restore a XML backup and presents messages similar to the below in the atlassian-jira.log.

2013-01-01 13:01:09,350 JiraImportTaskExecutionThread-1 ERROR XXXXXX 781x19x1 1bk15j5 0:0:0:0:0:0:0:1 /secure/SetupImport.jspa [jira.bc.dataimport.DefaultDataImportService] Error importing data: java.lang.IllegalArgumentException: [GenericDelegator.makeValue] could not find entity for entityName: LinkEntity
java.lang.IllegalArgumentException: [GenericDelegator.makeValue] could not find entity for entityName: LinkEntity
	at org.ofbiz.core.entity.GenericDelegator.makeValue(GenericDelegator.java:430)
	at sun.reflect.GeneratedMethodAccessor120.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at com.atlassian.multitenant.impl.MultiTenantComponentFactoryImpl$AbstractMultiTenantAwareInvocationHandler.invokeInternal(MultiTenantComponentFactoryImpl.java:181)
	at com.atlassian.multitenant.impl.MultiTenantComponentFactoryImpl$MultiTenantAwareMethodInterceptor.intercept(MultiTenantComponentFactoryImpl.java:230)
	at org.ofbiz.core.entity.GenericDelegator$$EnhancerByCGLIB$$9e98ab2.makeValue(<generated>)
	at com.atlassian.jira.ofbiz.DefaultOfBizDelegator.makeValue(DefaultOfBizDelegator.java:385)
	at com.atlassian.jira.action.admin.OfbizImportHandler.startElement(OfbizImportHandler.java:176)
	at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
(...)
JiraImportTaskExecutionThread-1 ERROR XXXXX 775x191x1 13ia0t7 0:0:0:0:0:0:0:1 /secure/admin/XmlRestore.jspa [jira.bc.dataimport.DefaultDataImportService] Error importing data: java.lang.IllegalArgumentException: [GenericDelegator.makeValue] could not find entity for entityName: KPlugins
java.lang.IllegalArgumentException: [GenericDelegator.makeValue] could not find entity for entityName: KPlugins
	at org.ofbiz.core.entity.GenericDelegator.makeValue(GenericDelegator.java:430)
	at sun.reflect.GeneratedMethodAccessor285.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at com.atlassian.multitenant.impl.MultiTenantComponentFactoryImpl$AbstractMultiTenantAwareInvocationHandler.invokeInternal(MultiTenantComponentFactoryImpl.java:181)
	at com.atlassian.multitenant.impl.MultiTenantComponentFactoryImpl$MultiTenantAwareMethodInterceptor.intercept(MultiTenantComponentFactoryImpl.java:230)
	at org.ofbiz.core.entity.GenericDelegator$$EnhancerByCGLIB$$6c2a9e86.makeValue(<generated>)
	at com.atlassian.jira.ofbiz.DefaultOfBizDelegator.makeValue(DefaultOfBizDelegator.java:371)
	at com.atlassian.jira.action.admin.OfbizImportHandler.startElement(OfbizImportHandler.java:160)
	at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
	at org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source)
	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
(...)
2016-01-04 19:00:06,390 JiraImportTaskExecutionThread-1 ERROR anonymous 1140x23x1 gt55l6 192.168.10.122 /secure/SetupImport.jspa [c.a.j.bc.dataimport.DefaultDataImportService] Error importing data: java.lang.IllegalArgumentException: [GenericEntity.setString] "q_text" is not a field of
java.lang.IllegalArgumentException: [GenericEntity.setString] "q_text" is not a field of
        at org.ofbiz.core.entity.GenericEntity.setString(GenericEntity.java:326)
        at com.atlassian.jira.action.admin.OfbizImportHandler.endElement(OfbizImportHandler.java:506)
        at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
        at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
        at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
        at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)

Cause

There are two possible causes for this problem.

Cause #1

The XML backup was generated from an instance which has some specific third party plugins installed that use JIRA application default entity model for data storage, which is unsupported.

Some of the plug-ins known to cause the problem are:

  • Minyaa Suite (formerly Kaamelot Plugin)
  • Database Custom Field (depends on katl-commons). Raised with the plugin developers under DBCF-215.
  • Blitz Action. Raised with the plugin developers under KBA-44.
  • User Group Picker (depends on katl-commons). Raised with the third-party plugin developers under UGP-55.
  • JJupin (depends on katl-commons). Raised with the third-party plugin developers under IMJ-303.
  • qanda

(info) These add-ons are not supported by Atlassian, therefore it’s recommended to contact the vendor responsible for each in the occurrence of this problem before proceeding with any action.

JRA-40722

Getting issue details…
STATUS

 

Cause #2

The XML backup was generated from an application version newer than the targeted JIRA application instance.

Since different versions of JIRA applications may use different entity models, importing a backup from a newer version of a JIRA application can introduce this sort of problems, therefore it’s unsupported.

Resolution

For «Cause #1»

Carefully check what plugins you had installed on the JIRA application source instance and install them all on the new application before restoring the data.

(warning) This may require the purchase of additional licenses.

For «Cause #2»

Import the backup file into a version of JIRA applications equal to or newer than the one from where the backup was generated.

Workaround

Only for «Cause #1»

You will lose all the functionality and data provided by those third party plugins. You may also lose functionalities from other plugins we’re not aware of.

If you don’t intend to keep those plugins in your new JIRA application instance or if the solution provided by the vendor contacted was insufficient, you can purge all the data related to those add-ons from the XML file following the below steps.

  1. Copy your backup file and keep it in a safe place in case of you need the previous data in the future;

  2. Unzip the file and edit the entities.xml file. Remove all the following tags:

    TimesheetEntity
    TimesheetScheme
    Myaa
    ReportEntity
    ReportScheme
    LinkEntity
    LinkScheme
    WorklogExt
    WorklogType
    KPlugins
    KPluginsCfg
    cfgDefaultValue
    cfgLDefaultValue
    cfgValue
    cfgLValue
    QANDAA
    QANDAQ
    QANDAE
    a_text
    q_text
    jjlf_project
    jjlf_config
    jjlf_category
    KListenerSils
    JiraCapacityPlan
    additionalTaskDescription
    testexecutionhistory
    KRSSecurity
    KBlitzActions

    Note: If you’re using an Unix-based operating system, you can run the below command on a terminal window.

    egrep -v "(QANDAA|QANDAQ|QANDAE|a_text|q_text|TimesheetEntity|TimesheetScheme|Myaa|ReportEntity|ReportScheme|LinkEntity|LinkScheme|WorklogExt|WorklogType|KPlugins|KPluginsCfg|cfgDefaultValue|cfgLDefaultValue|cfgValue|cfgLValue|jjlf_config|jjlf_project|jjlf_category|KListenerSils|JiraCapacityPlan|additionalTaskDescription|testexecutionhistory|KRSSecurity|KBlitzActions)" entities.xml > entities-purged.xml

    Additionally there is a Java file that can be used to do this, located at https://bitbucket.org/atlassianlabs/xml-purge/downloads/xml-purge-1.0-SNAPSHOT.jar. Download that and run the following (this requires Java 8):

    java -jar xml-purge-1.0-SNAPSHOT.jar entities.xml > entities-purged.xml
  3. Zip the modified entities.xml file back into a backup file;

    Note: If you’re running an Unix-based operating system, you can run the below command on a terminal window.

    mv entities-purged.xml entities.xml ; zip -r MyBackupFile.zip entities.xml activeobjects.xml
  4. Restart the XML restore process;

Понравилась статья? Поделить с друзьями:
  • Ошибка при разборе c windows microsoft net framework
  • Ошибка при разблокировке загрузчика xiaomi 1004
  • Ошибка при публикации сайт закупки
  • Ошибка при публикации некорректный вид заявителя
  • Ошибка при публикации sims 3