繁体   English   中英

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

[英]Get content of XML node using 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");

选择说明就好了,现在我在世界上如何得到那里的内容?

我建议看一下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;

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);
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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM