sudhakarthikeyan Ответов: 2

Синтаксический анализ Xml: строка 22, символ 2, ожидаемый пробел


DECLARE @x XML = '
 
<table width="100%" cellpadding="1" cellspacing="1"><tbody><tr style="COLOR: black; FONT-FAMILY: Arial; FONT-SIZE: 10pt; BACKGROUND-COLOR: #f2f2f2"><td>Medical Record No. : 1165677</td><td>Patient Name : MASTER. SURYANARAYANAN T S </td><td>Age : 16 Year(s)</td><td>Sex : male</td></tr></tbody></table>

<table cellspacing="1" cellpadding="1" border="0" width="100%"><tbody><tr style="COLOR: black; FONT-FAMILY: Arial; FONT-SIZE: 10pt; BACKGROUND-COLOR: #f2f2f2"><td>Address : 
NO 24 KARTHGIK AVENUE 2ND STREET, TIRUMAGAL ANAGR, CHITLAPAKKAM, CHROMPET, ---,</td></tr><tr style="COLOR: black; FONT-FAMILY: Arial; FONT-SIZE: 10pt"><td>TAMIL NADU, INDIA - 600064.</td></tr></tbody></table>

<table width="100%" cellpadding="1" cellspacing="1"><tbody><tr style="COLOR: black; FONT-FAMILY: Arial; FONT-SIZE: 10pt; BACKGROUND-COLOR: #f2f2f2"><td>Report Date : 2015-05-17 </td><td>Optometrist : RAMYA S </td><td>Start Time : 2015-05-17 08:25 </td></tr><tr style="COLOR: black; FONT-FAMILY: Arial; FONT-SIZE: 10pt; BACKGROUND-COLOR: #f2f2f2"><td>Consultant : Dr.JAYA PRAKASH V </td></tr></tbody></table>
<br><a href="#" target="_top">
<table border=0 cellSpacing=1 cellPadding=1 width=100%>Eye Symptom Description Duration Unit Onset Progression Remarks Associated Symptoms '
SELECT t.c.value('.', 'NVARCHAR(MAX)')
FROM @x.nodes('*') t(c)

когда я запускаю приведенный выше код показывает ошибку следующим образом

Синтаксический анализ XML: строка 22, символ 2, ожидаемый пробел

Линия 22 следующего содержания

"onclick="window.parent.document.getElementById("Base_pgContentHolder_pgContent_hdnscrnid").value="EMRFIRST";


в чем ошибка в моей строке 22.

Что я уже пробовал:

<pre lang=SQL">DECLARE @x XML = '

<table width="100%" cellpadding="1" cellspacing="1"><tbody><tr style="COLOR: black; FONT-FAMILY: Arial; FONT-SIZE: 10pt; BACKGROUND-COLOR: #f2f2f2"><td>Medical Record No. : 1165677</td><td>Patient Name : MASTER. SURYANARAYANAN T S </td><td>Age : 16 Year(s)</td><td>Sex : male</td></tr></tbody></table>

<table cellspacing="1" cellpadding="1" border="0" width="100%"><tbody><tr style="COLOR: black; FONT-FAMILY: Arial; FONT-SIZE: 10pt; BACKGROUND-COLOR: #f2f2f2"><td>Address : 
NO 24 KARTHGIK AVENUE 2ND STREET, TIRUMAGAL ANAGR, CHITLAPAKKAM, CHROMPET, ---,</td></tr><tr style="COLOR: black; FONT-FAMILY: Arial; FONT-SIZE: 10pt"><td>TAMIL NADU, INDIA - 600064.</td></tr></tbody></table>

<table width="100%" cellpadding="1" cellspacing="1"><tbody><tr style="COLOR: black; FONT-FAMILY: Arial; FONT-SIZE: 10pt; BACKGROUND-COLOR: #f2f2f2"><td>Report Date : 2015-05-17 </td><td>Optometrist : RAMYA S </td><td>Start Time : 2015-05-17 08:25 </td></tr><tr style="COLOR: black; FONT-FAMILY: Arial; FONT-SIZE: 10pt; BACKGROUND-COLOR: #f2f2f2"><td>Consultant : Dr.JAYA PRAKASH V </td></tr></tbody></table>
<br></a><a href="#" target="_top">
<table border=0 cellSpacing=1 cellPadding=1 width=100%>Eye Symptom Description Duration Unit Onset Progression Remarks Associated Symptoms '

SELECT t.c.value('.', 'NVARCHAR(MAX)')
FROM @x.nodes('*') t(c)


когда я запускаю приведенный выше код показывает ошибку следующим образом
Цитата:
Синтаксический анализ XML: строка 22, символ 2, ожидаемый пробел

Линия 22 следующего содержания
"onclick="window.parent.document.getElementById("Base_pgContentHolder_pgContent_hdnScrnId").value="EMRFIRST";


в чем ошибка в моей строке 22.

Patrice T

Хорошо показать какой-то код, но лучше показать код, содержащий оскорбительную строку.

2 Ответов

Рейтинг:
2

Kevheathfield

Эй чувак,

Я бы предложил загрузить/установить XML-плагин для notepad++, а затем разобраться с XML. Я запускаю это через функцию Validate Now вышеупомянутого плагина, и она терпит неудачу в строке 12:
"Дополнительный комментарий в конце документа"

Это действительно работает, но я вижу, что в этом xml есть и другие проблемы.

Удачи.


Рейтинг:
2

Richard Deeming

Цитата:
onclick="window.parent.document.getElementById("Base_pgContentHolder_pgContent_hdnScrnId").value="EMRFIRST";"

Это недопустимый XML-код. Это даже не допустимый HTML. У вас есть вложенные двойные кавычки, которые не допускаются.

В веб-браузере список атрибутов в DOM будет выглядеть примерно так:
onclick = "window.parent.document.getElementById("
base_pgcontentholder_pgcontent_hdnscrnid").value = "EMRFIRST" 
;" = ""

XML гораздо менее снисходителен и просто отвергает недопустимый атрибут.

Атрибут должен выглядеть следующим образом:
onclick="window.parent.document.getElementById('Base_pgContentHolder_pgContent_hdnScrnId').value='EMRFIRST';"
использование одинарных кавычек для кавычек внутри значения атрибута.

Поскольку вы делаете это в строке SQL, вам нужно будет удвоить одинарные кавычки:
onclick="window.parent.document.getElementById(''Base_pgContentHolder_pgContent_hdnScrnId'').value=''EMRFIRST'';"


Вам также нужно будет убедиться, что вся строка является допустимым XHTML, поскольку обычный HTML не обязательно является допустимым XML. Это означает цитирование всех значений атрибутов; закрытие всех элементов; использование чувствительных к регистру имен элементов; правильное вложение элементов; и наличие одного корневого элемента.