2

好的,这里是愚蠢的问题,但我只是从 xml 开始。

<fifth points = '500' answer = 'Ada Lovelace'>
    This woman, known as the world's first computer programmer
    was also a Countess.
</fifth>

在 Ada Lovelace 之后,我究竟如何获得数据?我知道第五个是节点,点和答案是属性。我必须抓住什么才能获得所需的数据?

4

3 回答 3

1

您可能正在寻找类似的东西:

node.InnerText

要了解如何在 C# 中解析节点 XML,请阅读http://www.csharp-examples.net/xml-nodes-by-name/。这篇文章http://www.codeproject.com/Articles/7718/Using-XML-in-C-in-the-simplest-way也可能有帮助,因为它提供了一些解析 XML 的最简单方法在 C# 中。

您可以简单地使用节点名称索引 XmlNode:xmlNode["FirstName"].InnerText。请参见下面的示例。

XmlDocument xml = new XmlDocument();
// suppose that myXmlString contains "<Names>...</Names>":
xml.LoadXml(myXmlString); 

XmlNodeList xnList = xml.SelectNodes("/Names/Name");
foreach (XmlNode xn in xnList)
{
  string firstName = xn["FirstName"].InnerText;
  string lastName = xn["LastName"].InnerText;
  Console.WriteLine("Name: {0} {1}", firstName, lastName);
}

输出是:

姓名:约翰·史密斯姓名:詹姆斯·怀特

编辑:重要的是要注意 DJ KRAZE 和 Jeremy Thompson 也启发了我的回答。

于 2013-01-08T05:22:42.303 回答
1

这是您可以尝试和测试的内容,以帮助您了解如何访问 node.InnerText

var testDoc =
    @"<fifth points = '500' answer = 'Ada Lovelace'>"
       +  "This woman, known as the world's first computer programmer "
       +  "was also a Countess."
       + "</fifth>";
XmlDocument docXML = new XmlDocument();
docXML.LoadXml(testDoc);
var innerxml = docXML.InnerText;
MessageBox.Show(innerxml);
于 2013-01-08T05:25:10.173 回答
0

您可以使用Linq to Xml。如果这是一个完整的 xml,您需要解析:

var xml = "<fifth points='500' answer='Ada Lovelace'>This woman, known as the world's first computer programmer was also a Countess.</fifth>";
XElement element = XElement.Parse(xml);
string text = (string)element; // takes element's innerText

如果您需要通过 answer 属性值从 xml 文件中选择此元素:

XDocument xdoc = XDocument.Load(path_to_xml_file);
string text = xdoc.Descendants("fifth")
                  .Where(e => (string)e.Attribute("answer") == "Ada Lovelace")
                  .Select(e => (string)e)
                  .FirstOrDefault(); // returns first matched element or null
于 2013-01-08T07:18:16.040 回答