1

メッセージ要素だけを取り戻すために微調整しようとしている次のコードがあります。

    public static void Main(string[] args)
    {

        Console.WriteLine("Querying tree loaded with XElement.Load");
        Console.WriteLine("----");
        XElement doc = XElement.Parse(@"<magento_api>
              <messages>
                <error>
                  <data_item>
                    <code>400</code>
                    <message>Attribute weight is not applicable for product type Configurable Product</message>
                  </data_item>
                  <data_item>
                    <code>400</code>
                    <message>Resource data pre-validation error.</message>
                  </data_item>
                </error>
              </messages>
            </magento_api>");
        IEnumerable<XElement> childList =
            from el in doc.Elements()
            select el;
        foreach (XElement e in childList)
            Console.WriteLine(e);
    }

次の結果を取得したいと思います。

<message>Attribute weight is not applicable for product type Configurable Product</message>
<message>Resource data pre-validation error.</message>

XElementのクエリ全体に慣れていないので、助けていただければ幸いです。

4

1 に答える 1

1

以下を使用する必要があります。

foreach (var descendant in doc.Descendants().Where(x => x.Name == "message"))
{
    Console.WriteLine(descendant);
}

また、次のことを実行することをお勧めします。

foreach (var descendant in doc.Descendants())
{
    Console.WriteLine(descendant);
}

XElementがどのように機能するかをよりよく理解するため。

于 2013-01-24T00:51:23.547 に答える