2011-10-27 24 views
0

XMLファイルを解析するのにXDocumentとLINQを使用していますが、うまくいきましたが、うまくいきませんでした。このような作業を見ていることXDocument XML解析の問題

ファイル:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<Scenarios xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <Scenario> 
     ... 
    </Scenario> 
</Scenarios> 

ファイルのように見ていないこと:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<Scenarios xmlns="http://www.w3.org/2001/XMLSchema-instance"> 
    <Scenario> 
     ... 
    </Scenario> 
</Scenarios> 

あなたがそれを見ていない場合は、それを見ると、私は違いを見つけました欠落している要素は、ルート要素の:xsiエイリアスです。

なぜこれが当てはまるのか知りたいだけです。そうでなければ同じであるファイルは、XDocument.Load()がそのエイリアスを持っていない限り、解析されません。

ありがとうございます!

+0

あなたは何を意味していくつかのノードが含まれている可能性が高いので、XDocumentは、デフォルトではスキーマ検証を行っていない、「しませんパースされますか?何が起こりますか?それはいくつかの例外をスローしますか? XMLに 'xsi:'接頭辞を付けて動作しない要素がありますか? – svick

答えて

2

最初の例では、接頭辞がの任意のノード(要素または属性)がXMLスキーマの名前空間のものであるとしています。

2番目の例では、接頭辞の付いていないノードがXMLスキーマの名前空間にあるとします。

接頭辞がxsiのノードがある場合は、最初のように宣言するか、ノードを削除する必要があります。

EDIT:svickが正しく指摘したように、問題が...xsi接頭

+1

あなたは大抵正しいですが、明示的にそれを自分で検証しない限り、 'XDocument'は実際にスキーマに従ってドキュメントを検証しないと思います。 – svick

+0

@svick私はそれが有効であることを実際にチェックしていなかった。可能性の高い理由を示すために回答が更新されました。 –