простой вопрос, но я укорачивал вокруг с ним в течение часа, и это действительно начинает расстраивать меня. У меня есть 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");
который выбирает примечание очень хорошо, теперь как в мире я получаю содержание там?
Могу я предложить взглянуть на 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;
XmlDocument doc = new XmlDocument();
doc.Load("C:\\test.xml");
XmlNode x = doc.SelectSingleNode("/TimelineInfo/Ambassador");
x.InnerText
вернет содержимое
Попробуйте использовать Linq to XML - это обеспечивает очень простой способ запроса источников данных xml - http://msdn.microsoft.com/en-us/library/bb387098%28v=VS.100%29.aspx
Свойство 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);