1

400kb の大きな xml ファイルがあります。

次を使用してロードしようとすると:

  • IXMLDocument の LoadXMLData または
  • CreateOLEObject('MSXML2.DOMDocument.4.0')' Load メソッド

両方の方法で未定義のエラーが発生します。私はファイルを取得し、xml 検証 Web ページに貼り付けました。

他に何ができますか?

ところで、要素の属性の最大長はありますか?

編集

長い属性を読み込めないようです... xmlの属性値に別のxmlの一部があります...

An error pops up: Undefined error. Line: 1 (here is the begining of the xml)
Class of the exception is: EDOMParseError

一般的に、私はこのようなものを達成したいと思います:

<doc type="X223">
  <params id_param="51" value="XML_1" />
  <params id_param="52" value="XML_2" />
  <params id_param="53" value="XML_3" />
</doc>
4

1 に答える 1

2

スキーマを変更できる場合は、内部の XML ファイルを に保存することをお勧めしますCDATA section。そうでない場合は、次のことを検討してください。

要素の属性値でパーサーが失敗した可能性が最も高いのは、そこに保存しようとした XML ファイルに含まれる引用符が原因である可能性があります。たとえば、次のケースを考えてみましょう。

<params id_param="51" value="<innerxmlattributevalue="value">"/>

ご覧のとおり、パーサーをその内部 XML からの quote char と混同する可能性があるため、上記の行は次のようになります。

<params id_param="51" value="<innerxmlattributevalue="
value">"/>     <-- here is expected to be another attribute or closing bracket

現在のスキーマを維持したい場合にできる最も簡単な方法は、内部 XML ファイルのすべての引用符をエスケープすることです。

仕様からRFC 2629(私が強調):

すべての属性値が引用符で囲まれていることを確認してください。たとえば、"<example name='value'>"値に引用文字の 1 つが含まれている場合は、もう一方を使用して値を引用します。たとえば、"<example name='"'>"に両方の引用文字が含まれている場合は、そのうちの 1 つを使用して属性値内のその文字の出現を'&apos;'(アポストロフィ) または"&quot;" (引用符) の"<example name='"&apos;"'>"いずれかに置き換えます。

于 2012-11-29T11:29:31.800 に答える