Получите содержание узла XML с помощью c#

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

  <TimelineInfo>
    <PreTrialEd>Not Started</PreTrialEd>
    <Ambassador>Problem</Ambassador>
    <PsychEval>Completed</PsychEval>
  </TimelineInfo>

И все, что я хочу сделать, использовать C#, чтобы сохранить строку между <Ambassador> и </Ambassador>.

До сих пор я имею:

XmlDocument doc = new XmlDocument();
doc.Load("C:\\test.xml");
XmlNode x = doc.SelectSingleNode("/TimelineInfo/Ambassador");

который выбирает примечание очень хорошо, теперь как в мире я получаю содержание там?

11
задан Adam S 3 June 2010 в 15:23
поделиться

4 ответа

Могу я предложить взглянуть на LINQ-to-XML (System.Xml.Linq)?

var doc = XDocument.Load("C:\\test.xml");

string result = (string)doc.Root.Element("Ambassador");

LINQ-to-XML намного дружелюбнее, чем классы Xml* (System.Xml).


В противном случае вы должны быть в состоянии получить значение элемента, извлекая свойство InnerText.

string result = x.InnerText;
15
ответ дан 3 December 2019 в 05:11
поделиться
XmlDocument doc = new XmlDocument();
doc.Load("C:\\test.xml");
XmlNode x = doc.SelectSingleNode("/TimelineInfo/Ambassador");

x.InnerText вернет содержимое

3
ответ дан 3 December 2019 в 05:11
поделиться

Попробуйте использовать Linq to XML - это обеспечивает очень простой способ запроса источников данных xml - http://msdn.microsoft.com/en-us/library/bb387098%28v=VS.100%29.aspx

0
ответ дан 3 December 2019 в 05:11
поделиться

Свойство InnerText должно работать нормально.

http://msdn.microsoft.com/en-us/library/system.xml.xmlnode.innertext.aspx

FWIW, вы можете рассмотреть возможность переключения API на linq-to-xml (XElement и друзья), так как IMHO это дружественный и более простой API для взаимодействия.

Версия System.Xml (NOTE: не нужно приводить к XmlElement)

var xml = @"<TimelineInfo>
                <PreTrialEd>Not Started</PreTrialEd>
                <Ambassador>Problem</Ambassador>
                <PsychEval>Completed</PsychEval>
            </TimelineInfo>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
var node = doc.SelectSingleNode("/TimelineInfo/Ambassador");
Console.WriteLine(node.InnerText);

Версия linq-to-xml:

var xml = @"<TimelineInfo>
                <PreTrialEd>Not Started</PreTrialEd>
                <Ambassador>Problem</Ambassador>
                <PsychEval>Completed</PsychEval>
            </TimelineInfo>";
var root = XElement.Parse(xml);
string ambassador = (string)root.Element("Ambassador");
Console.WriteLine(ambassador);
4
ответ дан 3 December 2019 в 05:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: