【问题标题】:Xmlreader - get element by name and write out childelements c# webformsXmlreader - 按名称获取元素并写出子元素 c# webforms
【发布时间】:2016-12-13 18:54:56
【问题描述】:

我试图写出“水果”排名元素中的每个子元素。就像现在的代码一样,它转到我的 xml 文件中的第一个排名元素并输出其中的子元素:但是我如何按名称转到“水果”并写出它的子元素?

Xml

 <ranking name="Browers>
 <stat name="Chrome" />
 <stat name="Firefox" />
 <stat name="Safari" />
 </ranking>
<ranking name="Fruit>
 <stat name="Apple" />
 <stat name="Orange" />
 <stat name="Strawberry" />
 </ranking>

代码隐藏

   XmlReader reader =       XmlReader.Create(Server.MapPath("/temp/rankings.xml"));

    while (true)
    {
        reader.ReadToFollowing("ranking");
        string name = reader.GetAttribute("name");

        if (name == "Fruit")
        {
            if (reader.ReadToDescendant("stat"))
            {
                do
                {
                    litList.Text += reader.GetAttribute("name") + "<br />";
                    litList.Text += reader.GetAttribute("percent") + "<br />";
                    litList.Text += reader.GetAttribute("absolute") + "<br />";


                } while (reader.ReadToNextSibling("stat"));
            }

            break;
        }  
    }

【问题讨论】:

  • 两个循环呢?排名第一,统计第二?
  • 成功了,只是想不明白。
  • 那么,如果没有一个名为fruit的排名,你会进入死循环吗?您发布的这段代码将 gasp 满足您非常 的特定需求,但这并不是真正的方法。 (只是说以防其他人需要类似的东西,他们不会复制/粘贴)

标签: c# asp.net xml webforms xmlreader


【解决方案1】:

可以这样做:

        if (reader.ReadToFollowing("ranking"))
        {
            do
            {
                Console.WriteLine("Ranking: " + reader.GetAttribute("name"));
                if (reader.ReadToDescendant("stat"))
                {
                    do
                    {
                        Console.WriteLine("Stat: " + reader.GetAttribute("name"));
                    } while (reader.ReadToNextSibling("stat"));
                }
            } while (reader.ReadToNextSibling("ranking"));
        }

它可能有一些缺点。除了 XmlReader,您还可以使用 XDocument:https://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument(v=vs.110).aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-31
    • 2019-03-08
    • 1970-01-01
    • 2012-05-05
    相关资源
    最近更新 更多