尝试使用C#读取特定的Xml值

时间:2018-10-04 13:18:09

标签: c# xml visual-studio

我是C#的新手。请帮助我。

data.xml

<?xml version="1.0" standalone="yes"?>
<DataSet1 xmlns="http://tempuri.org/DataSet1.xsd">
  <Language>
    <Id>001</Id>
    <English>"Welcome to India"</English>
    <German>"Willkommen in Indien"</German>
  </Language>
</DataSet1>

如何使用C#Xml读取Id的值?我是C#的新手。请帮助我。

我的努力:

XmlDocument doc = new XmlDocument();
XmlReader reader = XmlReader.Create(@"D:\data.xml");

while(reader.Read())
{
    reader.MoveToContent();
    if (reader.IsStartElement("DataSet1"))
    {
        reader.ReadToDescendant("Language");

        string str2 = reader.Name.ToString();
        MessageBox.Show(str2);
    }
}

2 个答案:

答案 0 :(得分:5)

我强烈建议您使用LINQ to XML,它是一个比XmlDocument简单得多的API,并且具有出色的名称空间支持。这是一个使用LINQ to XML获取Id值的示例:

using System;
using System.Xml.Linq;          

public class Program
{
    public static void Main()
    {
        XDocument doc = XDocument.Load("test.xml");
        XNamespace ns = "http://tempuri.org/DataSet1.xsd";

        string id = doc.Root           // From the root...
            .Element(ns + "Language")  // select the Language direct child...
            .Element(ns + "Id")        // and the Id child of that...
            .Value;                    // and then take the text value
        Console.WriteLine(id);
    }
}

很明显,如果您的XML不仅具有单个Language元素,就需要选择正确的元素,依此类推。您应该阅读LINQ to XML documentation以获得更多信息。

答案 1 :(得分:1)

使用XmlDocument,如果您需要进一步的帮助,请发表评论:)

Low

一点点解释:

我非常推荐XmlDocument,因为我真的很喜欢自己使用它,此外它还具有一些非常简洁的功能可供探索。除此之外,通过节点很容易获得或迭代