1

重複の可能性:
XmlReader - 自己終了要素は EndElement イベントを発生させませんか?

私たちのグループは、C# 用の大学のポートフォリオの作成に忙しく取り組んでいます...コーディングしなければならないアプリケーションの 1 つは天気予報アプリです...Web サイトから XML コーディングを取得し、必要な天気情報 (降水量など) を表示する必要があります。温度など

ウェブ上でこれを行う方法はいくつか見つかりましたが、省略形のタグを処理する方法は見つかりませんでした。使用する必要がある Web サイトには、次の xml コーディングがあります。

<symbol var="01d" name="Fair" number="1"/> <precipitation value="0"/> 
<!-- Valid at 2012-10-10T14:00:00 -->
<windDirection name="South" code="S" deg="182.4"/> 
<windSpeed name="Moderate breeze"     mps="5.9"/> 
<temperature value="17" unit="celsius"/>     
<pressure value="1021.3" unit="hPa"/>

つまり、一般的にタグの省略形の方法を使用します....

タグ要素を認識してそこから属性情報を収集できる C# コードを教えてくれる人はいますか?

私たちが持っている最も近いものはこれです:

 XmlTextReader reader = new XmlTextReader("weather.xml");
            while (reader.Read())
            {
                switch (reader.NodeType)
                {
                    case XmlNodeType.Element: // The node is an element.
                        Console.Write("<" + reader.Name);
                        Console.WriteLine(">");
                        break;

                    case XmlNodeType.Text: //Display the text in each element.
                        Console.WriteLine(reader.Value);
                        break;

                    case XmlNodeType.EndElement: //Display the end of the element.
                        Console.Write("</" + reader.Name);
                        Console.WriteLine(">");
                        break;
                }

しかし、これは手書きのタグを持つ XML に対してのみ機能します....どんな助けも大歓迎です:)

4

2 に答える 2

1

(msdnから)タグから属性を読み取ることができます:

      while (reader.Read())
            {
...
                if (reader.HasAttributes)
                {
                    Console.WriteLine("Attributes of <" + reader.Name + ">");
                    while (reader.MoveToNextAttribute())
                    {
                        Console.WriteLine(" {0}={1}", reader.Name, reader.Value);
                    }
                    // Move the reader back to the element node.
                    reader.MoveToElement();
                }
...
于 2012-10-11T18:12:52.157 に答える
1

あなたが説明する「省略形」は、一般に XML 属性と呼ばれます。XmlReader を使用しないでください。仕事のためのより良いツールがあります。次のような構造を想定します。

<someRoot>
    <symbol var="01d" name="Fair" number="1"/> <precipitation value="0"/> 
    <!-- Valid at 2012-10-10T14:00:00 -->
    <windDirection name="South" code="S" deg="182.4"/> 
    <windSpeed name="Moderate breeze"     mps="5.9"/> 
    <temperature value="17" unit="celsius"/>     
    <pressure value="1021.3" unit="hPa"/>
</someRoot>

次のように、これから属性を簡単に解析できます。

XDocument doc = XDocument.Parse(someXmlString);
string someAttrValue = doc.Root.Element("symbol").Attribute("var").Value;
于 2012-10-11T18:20:42.360 に答える