2017-08-08 29 views
1

私は、次のXML(試験例)を有し、W3Cドキュメントショーの名前空間修飾終了タグのすべての例もののThe 'ss:Data' start tag on line 12 position 14 does not match the end tag of 'Data'. Line 12, position 43.
DataSet.ReadXml()を使用してファイルを読み取ろうとすると必須のXML終了タグ名は、XML終了タグ名とまったく同じですか?

<?xml version="1.0" encoding="UTF-8"?><?mso-application progid="Excel.Sheet"?> 
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" 
xmlns:o="urn:schemas-microsoft-com:office:office" 
xmlns:x="urn:schemas-microsoft-com:office:excel" 
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" > 
<Styles> 
<Style ss:ID="s21"><NumberFormat ss:Format="@"/></Style> 
</Styles> 
<Worksheet ss:Name="--"> 
<Table ss:ExpandedColumnCount="1" ss:ExpandedRowCount="1" x:FullColumns="1" x:FullRows="1" ss:StyleID="s21"> 
    <Column ss:StyleID="s21" ss:Width="184"/> 
    <Row> 
     <Cell><ss:Data ss:Type="String">42</Data></Cell> 
</Row></Table></Worksheet></Workbook> 

、次の例外が生成されますMS Excelは警告なしでそのようなファイルを開きます。

設定DataSet.Namespace = "ss";は何も変更されません。

このファイルを読み込むには、できるだけ余分なライブラリを追加する必要はありませんか?

+0

があるべき参照: – jdweng

+0

は@jdwengはい、それは完璧なXMLは次のようにすべきではないと思われます。私の質問です:このXMLは、それを変更する自由がないので、どのように私はそれを解析する必要があります? ""のすべてのインスタンスを ""、すべてのインスタンス ""を ""に置き換えると、おそらく動作しますが、「簡単な」方法があるかどうかは疑問です。 – Abstraction

+0

@Abstraction:このようにはならないのは「完璧な」XMLだけではありません。 * * XML *はこのようにはできません。そうでなければXMLではありません。 – kjhughes

答えて

1

はい、XML終了タグは、名前空間接頭辞を含め、XML開始タグと正確に一致する必要があります。

好ましく余分 ライブラリを追加することなく、そのようなファイルを読むために何ができる?あなたの質問から

XMLは、準拠したXMLツールを使用して正常に解析されるには、整形式に修復する必要があります。

[定義:W3C XML Recommendation, section 3.1パー</ss:Data>

:開始タグ で始まるすべての要素の終わりがでマークされなければならない具体的には、あなたは、終了タグ@jdweng suggests in the commentsとして変更する必要があります終了タグ開始タグで与えられるよう 要素の型をエコーする名前を含む:]

あなたの質問から:

W3Cドキュメントのすべての例では、名前空間修飾された末尾の タグが表示されていますが、MS Excelはそのようなファイルを警告なしで開きます。

次に、MS ExcelはXMLを準拠した方法で処理していないため、他の問題がない可能性があります。

How to parse invalid (bad/not well-formed) XML?

+0

ありがとうございます。主に、ファイルが実際に整形式のXMLである間に、XmlReadMode値のようなものが見つからないことが心配でした。今私は明らかにリンクされた質問へのあなたの答えのオプション3を使用する必要があります。開始タグと終了タグの両方が接頭辞または接頭辞の両方でなければならないという直接引用がありますか? W3Cページ - https://www.w3.org/TR/REC-xml-names/ - 「STag ETag」を「<」QName(S属性)に拡張できるという印象を与える* S?'>' '' <' '<' PrefixedName '>' 'のように入力します。 – Abstraction

+0

XMLの勧告で、終了タグ名が開始タグ名と一致していなければならないことを示す場所が示されました。 – kjhughes

関連する問題