前駆
実際に知る必要はありませんが、問題の解決に役立つかもしれないビットは、ELMAH (エラー ログ システム) データベースからレコードのコレクションを取得し、抽出する一連の C# ステートメントを LINQPad で作成していることです。 XML (AllXml) フィールドを各レコードから抽出し、各抽出物を XmlDocument に読み込みます。わかりました、これはかなり簡単に思えますが、今度は各ドキュメントをトラバースして、そこから特定の値を取得する必要があります。
XML 構造の例
注: 潜在的に機密性の高い情報はここから削除しました...
<error type="System.Exception" time="2013-06-11T17:27:28.0122874Z">
<item name="PATH_INFO">
<value string="/foo/bar/thisIsTheValueIWant.aspx" />
</item>
<item name="PATH_TRANSLATED">
<value string="C:\site\foo\bar\thisIsPotentiallyAnotherValueIMightWant.aspx" />
</item>
<item name="QUERY_STRING">
<value string="meh" />
</item>
</error>
この XML は文字列として存在すると考えてください。次のようにロードしました。
XmlDocument doc = new XmlDocument();
doc.LoadXml(xmlString);
問題
ノードの値を取得するのはそれほど難しくありませんが、この例では、値はノードの属性として格納されており、それをトラバースする方法がわかりません!
基本的に、value
ノードにネストされたitem
ノードを取得しname
、属性"PATH_INFO"
の値を取得する必要があり"string"
ます。
どうすればこれを達成できますか?