2014-12-19 3 views
-1

У меня есть Xml В следующем форматеВозьми узел между двумя узлами

<?xml version="1.0" encoding="UTF-8"?> 
<htmlString> 
<ACTION v="Search"/> 
<KEY/> 
<ACCOUNTNO v=""/> 
<AGREEMENTREF1/> 
<AGREEMENTREF2/> 
<PAYMENTREF1/> 
<PAYMENTREF2/> 
<PROGRAM v="SOW03301"/> 
<SESSION v="SF3gGV1J4501"/> 
<OBJECT v="1"/> 
<HTMLFILE v="CGIOTP000023/TEMP:WHTTP"/> 
<PIPECOUNTER v="100000386"/> 
</htmlString> 

мне нужна часть между действием и ЗАСЕДАНИЕМ в виде строки.

<KEY/> 
<ACCOUNTNO v=""/> 
<AGREEMENTREF1/> 
<AGREEMENTREF2/> 
<PAYMENTREF1/> 
<PAYMENTREF2/> 
<PROGRAM v="SOW03301"/> 

Вы можете помочь в этом. Спасибо заранее.

+0

Задавая вопросы, убедитесь, что вы включили то, что вы пробовали. Как бы то ни было, похоже, что вы используете StackOverflow в качестве генератора кода. См. Справочный центр для руководства. – Mitch

ответ

0

Вы можете сделать это с XElement.ElementsAfterSelf:

string xml = @"<?xml version=""1.0"" encoding=""UTF-8""?> 
<htmlString> 
<ACTION v=""Search""/> 
<KEY/> 
<ACCOUNTNO v=""""/> 
<AGREEMENTREF1/> 
<AGREEMENTREF2/> 
<PAYMENTREF1/> 
<PAYMENTREF2/> 
<PROGRAM v=""SOW03301""/> 
<SESSION v=""SF3gGV1J4501""/> 
<OBJECT v=""1""/> 
<HTMLFILE v=""CGIOTP000023/TEMP:WHTTP""/> 
<PIPECOUNTER v=""100000386""/> 
</htmlString>"; 

var xd = XDocument.Parse(xml); 
var elements = xd.Root.Element("ACTION") 
    .ElementsAfterSelf() 
    .TakeWhile(xe => xe.Name.LocalName != "SESSION") 
    .Select(xe => xe.ToString()); 
var sbNew = string.Join(Environment.NewLine, elements); 

Console.Write(sbNew); 
Console.ReadLine(); 

Печать:

<KEY /> 
<ACCOUNTNO v="" /> 
<AGREEMENTREF1 /> 
<AGREEMENTREF2 /> 
<PAYMENTREF1 /> 
<PAYMENTREF2 /> 
<PROGRAM v="SOW03301" /> 
Смежные вопросы