简单的问题,但我一直在玩它一个小时,它真的开始让我感到沮丧。我的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");
选择说明就好了,现在我在世界上如何获得内容?
答案 0 :(得分:15)
我建议看看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;
答案 1 :(得分:4)
InnerText属性应该可以正常使用。
http://msdn.microsoft.com/en-us/library/system.xml.xmlnode.innertext.aspx
FWIW,您可以考虑将API切换为linq-to-xml(XElement和朋友),因为它是一个友好,更容易与之交互的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);
答案 2 :(得分:3)
XmlDocument doc = new XmlDocument();
doc.Load("C:\\test.xml");
XmlNode x = doc.SelectSingleNode("/TimelineInfo/Ambassador");
x.InnerText
将返回内容
答案 3 :(得分:0)
尝试使用Linq to XML - 它提供了一种查询xml数据源的简便方法 - http://msdn.microsoft.com/en-us/library/bb387098%28v=VS.100%29.aspx