Получить содержимое XML node с помощью С#
простой вопрос, но я часами обдумывал его, и это действительно меня расстраивало. У меня есть XML, который выглядит так:
<TimelineInfo>
<PreTrialEd>Not Started</PreTrialEd>
<Ambassador>Problem</Ambassador>
<PsychEval>Completed</PsychEval>
</TimelineInfo>
И все, что я хочу сделать, это использовать С# для получения строки, хранящейся между <Ambassador>
и </Ambassador>
.
До сих пор я:
XmlDocument doc = new XmlDocument();
doc.Load("C:\\test.xml");
XmlNode x = doc.SelectSingleNode("/TimelineInfo/Ambassador");
который отлично отбирает заметку, теперь, как в мире я получаю контент там?
Ответы
Ответ 1
Могу ли я предложить взглянуть на 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;
Ответ 2
Свойство InnerText должно работать нормально для вас.
http://msdn.microsoft.com/en-us/library/system.xml.xmlnode.innertext.aspx
FWIW, вы можете подумать о переключении API на linq-to-xml (XElement и друзей), поскольку IMHO это дружелюбный, более простой API для взаимодействия.
Версия System.Xml(ПРИМЕЧАНИЕ: никакого добавления к 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);
Ответ 3
XmlDocument doc = new XmlDocument();
doc.Load("C:\\test.xml");
XmlNode x = doc.SelectSingleNode("/TimelineInfo/Ambassador");
x.InnerText
вернет содержимое
Ответ 4
Попробуйте использовать Linq для XML - он обеспечивает очень простой способ запроса xml-источников данных - http://msdn.microsoft.com/en-us/library/bb387098%28v=VS.100%29.aspx