如何在C#中读取另一个xml标记内的标记?

时间:2019-11-23 18:15:49

标签: c# xml

如何读取另一个xml标签内的标签?

示例:

<site id = "1" clas = "black"><test> Value </test></site>

我想读取<site>中的测试标签。我想返回里面的东西。

我的代码:

XmlReader xmlReader = XmlReader.Create("site.xml");
while (xmlReader.Read())
{
    if ((xmlReader.NodeType == XmlNodeType.Element) && (xmlReader.Name == "site"))
    {
        if (xmlReader.HasAttributes)
        {
            string test = xmlReader.GetAttribute("id");
            Console.WriteLine(test);
        }
    }
}

2 个答案:

答案 0 :(得分:0)

您应该使用System.Xml.Linq.XElement API:

using (Stream s = File.OpenRead("sites.xml")) {
    XElement sites = XElement.Load(s);
    foreach (XElement test in sites.Elements()) {
    // test is now your inner node
    }
}

如果您坚持使用XmlReader,则可以使用ReadSubTree()。参见此example

答案 1 :(得分:0)

您可以使用 XMLNodeList 像下面一样

var doc = new XmlDocument();
doc.Load(sites.xml);
XmlDocument xml = new XmlDocument();
xml.LoadXml(doc.DocumentElement.OuterXml.ToString());
XmlNodeList xnList = xml.SelectNodes("/site/test");
 foreach (XmlNode xn in xnList)
            {
                if (xn["name"].InnerText == "test")
                {
                  string  testvalue = xn["test"].InnerText;
                }
            }