2015-03-23 3 views
0

У меня есть XML, который я получаю от другого приложения, что его структура такова:C#, как получить значения XML тегов из простой схемы XML

<uid>1DE23B0B-1601-4E48-B8F5-7D3152A815A1</uid> 
<status>1</status> 

Есть ли способ, как я могу получить значения без с использованием XMLDocument, на самом деле я даже не знаю, может ли XMLDocument загрузить XML с помощью этой простой схемы.

Любой ключ?

+0

Это не действует XML Я думаю –

+1

это XML имеет 2 корневых узлов, так что это не действует. Я думаю, вы должны разобрать его без XML-API .Net (например, использовать regex) –

ответ

0

Вы можете разобрать ваш псевдо-XML с помощью регулярных выражений, как это:

internal class Data 
{ 
    public string UId { get; set; } 
    public string Status { get; set; } 

    public Data(string text) 
    { 
     string strRegex = @"<uid>(.*?)</uid>.*?<status>(.*?)</status>"; 
     Regex myRegex = new Regex(strRegex, RegexOptions.Singleline | RegexOptions.IgnorePatternWhitespace); 

     var match = myRegex.Match(text); 
     UId = match.Groups[1].Value; 
     Status = match.Groups[2].Value; 
    } 
} 
2

Поскольку ваш XML не очень хорошо образован (имеет кратные корни) - вы не можете загрузить его в XmlDocument или XDocument - вы будете получить ошибку синтаксического анализа.

Однако, вы можете прочитать его, например, с XMLTextReader, если вы будете указать ConformanceLevel.Fragment в его настройках:

var settings = new XmlReaderSettings(); 
settings.ConformanceLevel = ConformanceLevel.Fragment; 
var reader = XmlReader.Create(@"c:\temp\test.xml", settings); 
while (reader.Read()) 
{ 
    if (reader.NodeType == XmlNodeType.Element) 
    { 
     var nodeName = reader.Name; 
     reader.Read(); 
     var value = reader.Value; 
    } 
} 
+0

@VAAA Я думаю, это должно быть отмечено как ответ. – hellowahab

Смежные вопросы