2011-12-14 18 views
2

微妙な問題に取り残されています。私は、XMLファイルを読むためのC#4.0コンソールアプリケーションを構築しようとしています。XMLファイルの読み込みと読み込みが処理の指示に失​​敗する

XMLファイルは以下の通りです:

<?xml version="1.0" encoding="UTF-8"?> 
<?xml:stylesheet type='text/xsl' href='report.xsl' version='1.0'?> 
... 
<logs> 
... 
</logs> 

をそして、これは私のコードです:これは、Loadメソッドで私に次のエラーを与える

... 
var root = XDocument.Load(xmlStream); 

IEnumerable<XElement> address = 
    from el in root.Descendants("formated-text") 
    select el; 
... 

" : '文字、16進数値0x3Aは名前に含めることはできません。 「 - 」に2行目、6位2行目のコロンを変更

は、エラーを解決します...当たり前

私はしなくても、ソースXMLを読むために私のコードで何ができますその '愚かな'コロンを先に置き換えますか?

ありがとうございました!

+0

が実際に動作しますことを自動的に主任研究者を処理し、ブラウザに読み込まれたとき。私はブラウザがエラーを許容する傾向があることを知っていますが、エラーメッセージを表示するほうが良いと思われます。 –

+0

はい、ブラウザではコロンで動作します...悲しいことに:o( – DeepCore

+1

XML ( –

答えて

2

何もありません。その "愚かなコロン"はその位置で単に無効です。

+0

)これらのXML要素で何が起こっているか/進んでいるかに役立つ手がかりを提供してくれてありがとう。 IネソースXMLの作成者がそのコロンで間違いを犯したというこの確認を編集しました。 私は既に自分のアプリケーションではなく、本当に大きな部門(鉱山ではない)を説得してアプリケーションを変更するまで、プランBを実装しました... o( プランBはストリームリーダーでまずXMLファイルを読み込みます – DeepCore

+0

そこに行ったことがあります: - /それは決してコード変更ではなく、変更要求、承認、リリーススケジュール... – dash

3

無効なXMLドキュメントがあるようです。コロンは、はハイフン(W3C)です。私は、LINQをXMLに変換して無効な文書を解析させることはできないと思っています。あなたは試してはいけません。代わりに文書を修正する必要があります。

1

あなたXSL-stylesheet要素が間違って参照してくださいダッシュ

を使用しなければならない、間違っています。

それは次のようになります。

<?xml-stylesheet type='text/xsl' href='report.xsl' version='1.0'?> 

はオンラインvalidatorsの任意の数と照らし合わせてXMLを検証してみます。

XMLを文字列として読み込み、文字列解析を使用してこの問題を解決したり、元のファイルを1行ずつ読み込んでxml:stylsheetの発生を修正してから、テキストファイルのように保存してからexample、ソースを修正するためにXMLを作成した人を誰でも入手する方が良いでしょう。

+0

それはですそれでも、私はインターネット上でこれらの多くを見てきました。( これらのXMLのソースでこの変更を実装するにはDavid vs Goliathのようになりますファイル...私はちょうどXMLのいくつかのデータ抽出を自動化するタスクを割り当てられている – DeepCore

+0

あなたがあなたがgそれらの多くを見ることを望んでいる、あなたはそれらを変更することはできません、あなたが行うことができる最善のことは、最初にそれらをきれいにすることです - したがって、ファイルの内容を文字列(yucky)行ごとに(より効率的で、すべての処理指示の後にXMLの最初の出現で保釈することができます) – dash

+0

楽しい事実。 'text/xsl'はありませんが、' application/xslt + xml'があります。正しい方法はある標準の規則に従いますが、別のものを壊しますが、正しい 'application/xslt + xml'を受け入れることはほとんどありません:( –

0

私が見つけたこれらの「不正な形式」XMLファイルの起源は戻って1990年代半ばにさかのぼること...はい、そのような古いシステムがまだ使用中で今日、まだこの出力を生成します。私は自分のコードで回避策を生かすことができます。

これらのXML要素が何をしていたか/起きているかに役立つ手がかりを与えていただき、ありがとうございます。

ソースXMLの作成者がそのコロンで間違いを犯したという確認が必要でした。

私は自分のアプリケーションの変更を行うために本当に大きな部門(ない鉱山を)納得できるまで私はすでに、プランBを実装しています...(

プランBは、最初のXMLファイルを読み込み、すべての「XML:」を置き換えるためにはO:発生箇所​​は、その後、私のプロセスには、この修正ファイルを養う

関連する問題