首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用c#获取XML节点的内容

使用c#获取XML节点的内容
EN

Stack Overflow用户
提问于 2010-06-03 23:23:33
回答 4查看 36K关注 0票数 11

这个问题很简单,但我已经纠结了一个小时了,这真的让我很沮丧。我的XML看起来像这样:

代码语言:javascript
复制
  <TimelineInfo>
    <PreTrialEd>Not Started</PreTrialEd>
    <Ambassador>Problem</Ambassador>
    <PsychEval>Completed</PsychEval>
  </TimelineInfo>

我想要做的就是使用C#来获取存储在<Ambassador></Ambassador>之间的字符串。

到目前为止,我有:

代码语言:javascript
复制
XmlDocument doc = new XmlDocument();
doc.Load("C:\\test.xml");
XmlNode x = doc.SelectSingleNode("/TimelineInfo/Ambassador");

它可以很好地选择注释,那么我到底如何才能获得其中的内容呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-06-03 23:25:55

我可以建议您看看LINQ-to-XML (System.Xml.Linq)吗?

代码语言:javascript
复制
var doc = XDocument.Load("C:\\test.xml");

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

LINQ-to-XML比Xml*类(System.Xml)要友好得多。

否则,您应该能够通过检索InnerText属性来获取元素的值。

代码语言:javascript
复制
string result = x.InnerText;
票数 17
EN

Stack Overflow用户

发布于 2010-06-03 23:29:01

InnerText属性应该适合您。

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

顺便说一句,你可以考虑把API改成linq- to -xml (XElement和它的朋友),因为这是一个友好的,更容易交互的API。

System.Xml版本(注意:不需要转换为XmlElement )

代码语言:javascript
复制
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版本:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2010-06-03 23:27:15

代码语言:javascript
复制
XmlDocument doc = new XmlDocument();
doc.Load("C:\\test.xml");
XmlNode x = doc.SelectSingleNode("/TimelineInfo/Ambassador");

x.InnerText将返回内容

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2967339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档