XmlDocument.Load Vs XmlDocument.LoadXml
Я столкнулся с проблемой, используя XmlDocument.LoadXml
.
Приложение сработало, получив следующую ошибку:
"Данные на корневом уровне недопустимы. Строка 1, позиция 1"
После проверки XML и поиска ничего плохого в нем я немного искал Google и нашел подсказку, чтобы использовать XmlDocument.Load
вместо XmlDocument.LoadXml
.
Я пробовал, и он отлично работает.
Мой вопрос: в чем разница между двумя методами и тем, что могло заставить работать, а другое - провалиться?
Ответы
Ответ 1
XmlDocument.Load используется для загрузки XML из потока, TextReader, пути /URL или XmlReader.
XmlDocument.LoadXml используется для загрузки XML, содержащегося в строке.
Это принципиально разные способы загрузки XML, в зависимости от того, где фактически хранится XML. Похоже, вы использовали неправильный метод для вашего XML.
Ответ 2
Вы пытались использовать XmlDocument.LoadXml
и передавали имя файла? Он этого не делает - он предполагает, что строка, которую вы передаете, является XML. Таким образом, вы можете использовать:
doc.LoadXml("<root><child /><root>");
или
doc.Load("myfile.xml");
Если это не поможет, можете ли вы показать свой неудачный и рабочий код? Существуют различные способы, с помощью которых можно было изменить LoadXml
на Load
...
Ответ 3
Предполагая, что вы правильно используете XmlDocument.Load
и XmlDocument.LoadXml
, эта проблема может быть вызвана "Оценка байта" .
Этот другой вопрос может быть полезен.
Ответ 4
Загрузка() загружается из определенного источника, тогда как LoadXml() загружается непосредственно из строки
Ответ 5
Сбой приложения со следующей ошибкой: "Данные на корневом уровне недействительны. Строка 1, позиция 1"
Я подозреваю, что у xml-данных нет корневого уровня:
например:
<area id="1">
<candidate id="0">dataata</candidate>
</area>
<area id="2">
<candidate id="0">dataataa</candidate>
</area>
вам нужно иметь хотя бы один уровень корня сверху нижних уровней.
например:
<areas>
<area id="1">
<candidate id="0">dataata</candidate>
</area>
<area id="2">
<candidate id="0">dataataa</candidate>
</area>
</areas>
поэтому, пожалуйста, положите одну маму на вершину своего уровня, сделайте ее величественной матерью всех детей.