2011-10-27 63 views
0

我正在使用XDocument和LINQ來解析一些XML文件,有些工作正常,但其他人卻沒有。尋找到它,我找到了差異: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

你是什麼意思,「不會被解析「?究竟發生了什麼?它會拋出一些異常嗎?你有沒有使用XML中前綴'xsi:'的元素不起作用? – svick

回答

2

在第一個示例中,您說的前綴爲xsi的任何節點(元素或屬性)都來自XML模式名稱空間。

在第二個示例中,您表示沒有任何前綴的任何節點位於XML模式名稱空間中。

如果您的節點的前綴爲xsi或者刪除了這些節點,您或者需要將聲明製作爲第一種。

編輯:作爲svick正確地指出,的XDocument默認情況下不執行模式驗證,所以這個問題是更可能的是,...包含具有xsi前綴一些節點

+1

你大部分都是對的,但我不認爲'XDocument'實際上根據模式驗證文檔,除非你自己明確地驗證它。 – svick

+0

@svick我實際上沒有檢查它是否被驗證。更新答案以提供更可能的原因。 –