从C#中的XML获取元素值

时间:2013-05-20 12:00:52

标签: c# xml microsoft-metro windows-store-apps

这是我在文件中的XML数据

<item id="ncx" href="toc.ncx" media-type="application/x-dtbncx+xml" />
<item id="W000Title" href="000Title.html" media-type="application/xhtml+xml" />
<item id="W01MB154" href="01MB154.html" media-type="application/xhtml+xml" />
<item id="WTOC" href="TOC.html" media-type="application/xhtml+xml" />

我想在Store应用程序中使用C#获取元素值。 我正在获得价值观,但这不是正确的方式。我无法进入下一步。

    string fileContents3 = await FileIO.ReadTextAsync(file);
    xmlDoc1.LoadXml(fileContents3);
    XmlNodeList item = xmlDoc1.GetElementsByTagName("item");
    for (uint k = 0; k < item.Length; k++)
    {
        XmlElement ele1 = (XmlElement)item.Item(k);
        var attri1 = ele1.Attributes;
        var attrilist1 = attri1.ToArray();
        for (int l = 0; l < attrilist1.Length; l++)
        {
            if (attrilist1[l].NodeName == "id")
            {

                    ids2 = attrilist1[0].NodeValue.ToString();
                    ids3 = attrilist1[1].NodeValue.ToString();
            }
        } 
   }

而不是这种方式我想知道获取属性“id”的元素值的任何方式

3 个答案:

答案 0 :(得分:0)

如果要获取XmlNode对象上的属性值,可以使用此函数:

    public static string GetAttributeValue(XmlNode node, string attributeName)
    {
        XmlAttribute attr = node.Attributes[attributeName];
        return (attr == null) ? null : attr.Value;
    }

答案 1 :(得分:0)

如果您需要使用XPath,可以按如下方式使用

      XmlDocument document = new XmlDocument();
        document.Load(@"c:\users\saravanan\documents\visual studio 2010\Projects\test\test\XMLFile1.xml");

        XmlNodeList itemNodes = document.SelectNodes("//item");

        foreach (XmlElement node in itemNodes)
        {
            if (node.Attributes.Count > 0)
            {
                if (node.HasAttribute("id"))
                {
                    Console.Write(node.Attributes["id"]);
                }

            }
        }

        var itemNodeswithAttribute = document.SelectNodes("//item[href=toc.ncx]");

        itemNodeswithAttribute = document.SelectNodes("//item[@href='toc.ncx']");

答案 2 :(得分:0)

string fileContents3 = await FileIO.ReadTextAsync(file);
xmlDoc1.LoadXml(fileContents3);
XmlNodeList item = xmlDoc1.GetElementsByTagName("item");
        for (uint k = 0; k < item.Length; k++)
        {
            XmlElement ele1 = (XmlElement)item.Item(k);
            string foo = ele1.Attributes[0].NodeValue.ToString();
        }

我简化了你的代码。希望这会帮助你。 我假设id属性始终位于第一个位置(索引0)。