11

C#アプリケーションにXMLファイルをロードしているときに、

名前を「1」文字、16進値0x31で始めることはできません。行2、位置2。

XMLタグはこのように始まります。

<version="1.0" encoding="us-ascii" standalone="yes" />
<1212041205115912>

このタグを変更することは一切ありません。

どうすればこれを解決できますか?

4

3 に答える 3

15

あなたが書いたものはxml標準に違反しているので、あなたはタグ名を変更することになっています。ここでそれの興味深い部分を覚えておいてください:

XML命名規則

XML要素 は次の命名規則に従わなければなりません:

  • 名前には、文字、数字、その他の文字を含めることができます
  • 名前を数字や句読文字で始めることはできません
  • 名前をxml(またはXML、Xmlなど)の文字で始めることはできません
  • 名前にスペースを含めることはできません

任意の名前を使用でき、単語は予約されていません。

標準を維持するあなたの問題を解決するための提案として:

  1. 属性を使用します。つまり、<Number value="1212041205115912"/>
  2. タグにプレフィックスを追加します。<_1212041205115912/>

もちろん、独自のフォーマットパーサーを作成することで、提案する構造を維持できますが、将来的に誰かがフォーマットを拡張し、 xmlそれは実際にはそうではなく、彼/彼女はそれに腹を立てることができます。さらに、カスタム形式が必要な場合は、より単純なものを使用します。つまり、テキストファイルに「<」と「>」を付けても、公式に認識されている形式でない場合は値が追加されないため、次のような形式を使用することをお勧めします。代わりに、単純なプレーンテキストファイル。

于 2012-05-09T06:45:18.933 に答える
4

あなたが絶対にそれを変えることができないならば、例えば。何らかの理由で、このフォーマットはすでに公開されており、他のシステム/顧客/その他によって使用されています。

無効なxmlドキュメントであるため、解析する前にクリーンアップしてみてください。例えば。すべての<number>タグを<IMessedUp>number</ IMessedUp>に置き換える正規表現を作成し、それを解析します。

それを行うための一種の厄介な方法ですが、私はあなたの問題を解決します。

于 2012-05-09T07:11:44.410 に答える
4

このドキュメントを処理する必要がある場合は、XMLとして考えるのをやめ、XMLツールを使用して処理することについての考えを捨ててください。あなたは独自のフォーマットを扱っており、それを処理するために独自のツールを作成する必要があります。XMLテクノロジを使用する利点が必要な場合は、有効なXMLになるようにドキュメントを再設計する必要があります。

于 2012-05-09T11:00:19.197 に答える