2017-01-17 8 views
0

Я эта строка структурирована как XML:Синтаксический строка XML и избавиться от ошибки корневого элемента

<damp fullmedia=""> 
    <mediaitem> 
    <img id="1119" version="29a5623f-d41c-4418-97b7-3cea8579ffd8" parentid="1052" level="2" writerid="0" nodetype="1032" template="0" sortorder="2" createdate="2016-11-30T10:09:40" updatedate="2016-11-30T10:09:40" nodename="2016-11-25_1251411957-277" urlname="2016-11-25_1251411957-277" writername="admin" nodetypealias="Image" path="-1,1052,1119"> 
     <umbracofile>/media/1013/2016-11-25_1251411957-277.jpg</umbracofile> 
     <umbracowidth>2598</umbracowidth> 
     <umbracoheight>1732</umbracoheight> 
     <umbracobytes>350613</umbracobytes> 
     <umbracoextension>jpg</umbracoextension>  
    </img> 
    </mediaitem> 
</damp> 

Я хочу, чтобы извлечь значение свойства «umbracofile», так что я сделал это:

var stringAsXml = "<damp fullmedia="">...."; 
var xmlDoc = new XmlDocument(); 
var imageUrl = xmlDoc.SelectSingleNode("//mediaItem/img/umbracoFile").InnerText; 

Код работает нормально, но у меня есть ошибка «Отсутствует элемент корня». Поскольку я просто хочу анализировать и извлекать значение узла, как я могу избавиться от этой ошибки?

+0

'Код работает нормально, но у меня есть error' I» d утверждают, что эти утверждения на самом деле противоречивы. Ошибка может быть связана с тем фактом, что вы ищете узел 'Image', когда узел на самом деле' img' – Jonesopolis

+0

Извините, моя ошибка, узел find/img/not/Image/ – Ras

+0

О, ваш тег 'img' также никогда закрыто. Я не знаю, если это опечатка – Jonesopolis

ответ

1

Код работает нормально, но у меня есть ошибка «Отсутствует элемент корня».

Тогда код не работает, что я думаю? Это должно работать:

var stringAsXml = "<damp fullmedia=\"\"><mediaitem><img id=\"1119\" version=\"29a5623f-d41c-4418-97b7-3cea8579ffd8\" parentid=\"1052\" level=\"2\" writerid=\"0\" nodetype=\"1032\" template=\"0\" sortorder=\"2\" createdate=\"2016-11-30T10:09:40\" updatedate=\"2016-11-30T10:09:40\" nodename=\"2016-11-25_1251411957-277\" urlname=\"2016-11-25_1251411957-277\" writername=\"admin\" nodetypealias=\"Image\" path=\"-1,1052,1119\"><umbracofile>/media/1013/2016-11-25_1251411957-277.jpg</umbracofile><umbracowidth>2598</umbracowidth><umbracoheight>1732</umbracoheight><umbracobytes>350613</umbracobytes><umbracoextension>jpg</umbracoextension></img></mediaitem></damp>"; 
var xmlDoc = new XmlDocument(); 
xmlDoc.LoadXml(stringAsXml); 
var imageUrl = xmlDoc.SelectSingleNode("damp/mediaitem/img/umbracofile").InnerText; 

И это также (если у вас есть несколько <umbracofile> узлов и хотите, чтобы выбрать первый):

var imageUrl = xmlDoc.SelectSingleNode("//umbracofile").InnerText;