2011-01-25 29 views
3

XMLファイルを読んでいます(xml属性で)。構造は変わらないが、内容は変わる。XMLで属性を読み取る最も簡単な方法

サンプルXML:http://www.yr.no/place/Norway/Oslo/Oslo/Oslo/forecast.xml (URLをコピーして貼り付けたアドレスフィールドに手動で、またはあなたはそれはそう404を得ることができますする必要があります。)

私は(このコードを使用して、それからXSDを作ることができませんよそして、)Xsd.exeではを使用して:

XmlTextReader myXmlTextReader = new XmlTextReader("forecast.xml"); 
DataSet myDataSet = new DataSet(); 
myDataSet.ReadXml(myXmlTextReader); 
myDataSet.WriteXmlSchema("forecast.xsd"); 

結果で:今すぐ

Column name 'name' is defined for different mapping types.

、私はその上に怠け者だと私の全体を過ごすような気がしないことを想像夕方に手動でXMLを自分のオブジェクトにマッピングします。私はマネージコードオブジェクトを私のために生成して、データを簡単に読むことができるようにしたい。

私のオプションは何ですか?

...誰かが知っていれば、XSD変換エラーメッセージはどういう意味ですか?

+0

リンクの後に404が表示されます。エラーを再現するXMLの小さなサンプルを投稿できますか? – Cameron

+1

"属性"はXML属性を意味しますか?私はそうは思わない。その場合は、タイトルを「XMLからのXSDの自動作成」のように変更する必要があります。しかし、あなたのコードを見ることができるまで問題はわかりません –

+0

@Cameron私も404を取得します –

答えて

1

Xsd.exeではエラーについてのあなたの最後のポイントに答えるために、それは複数の場所要素との問題を抱えています。 xmlを保存し、最初のの位置をのようなものに変更する場合は、という文字列を大文字に変換します。

これを処理するために、xsdまたは生成されたクラスを手動で修正することができます。

+0

これで問題は解決しました。 @ 37StarsとLINQ URLのポイントを授与したいと思いますが、この回答は私の問題に最も適していました。 –

2

XML属性を追いかける場合は、xmlをXmlDocumentに読み込まないだけです。次に、さまざまなノードと属性にアクセスできます。

+0

オブジェクトモデルを塗りつぶすために文書を正しく反復処理するためには、多くのコーディングが必要です。 LINQを使用してオブジェクトモデルを照会できるようにしたいので、MVVMでDataBindできるようにしたいので、オブジェクトモデルを完全に埋める必要があります。 –

+0

である必要はありません。複雑なオブジェクトモデルの場合は、オブジェクトモデルをナビゲートするコードも必要ですが、これはDOMツリーのナビゲートとほとんど変わりません。 –

関連する問題