インポート後に Import Set Table で無効な XML 文字エラーが返される - テーブルにアクセスできないIssue <!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } インポート操作の実行後に Import Set Table にアクセスすると、要素コンテンツ内で無効な XML 文字が検出されたことを示すエラーメッセージが表示されます。Import Set Table は読み取り不可かつアクセス不可になります。このエラーにより、ユーザーは Import Set Table 内のレコードを表示、アクセス、または管理できなくなります。 Symptoms<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } テーブルへのアクセス時にエラーメッセージが表示される: "An invalid XML character (Unicode: 0x3) was found in the element content of the document."代替形式のエラーメッセージ: "Character reference "" is an invalid XML character."別のエラーメッセージ: "An invalid XML character was encountered during parsing of the document."Import Set Table に、文字化けした文字、特殊記号、非表示文字を含む破損した列ラベルが表示されるsys_dictionary に表示される破損した列ラベルの例: PK�����!�{'È!z������[Content_Types].xml ¢("インポート完了後、テーブルが完全に読み取り不可になるImport Set Table 内のレコードを表示、アクセス、または取得できない列名がバイナリデータまたは圧縮ファイルのシグネチャ(例: [Content_Types].xml 参照)を含む文字化けした状態で表示されるImport Set Table のリストビューを開こうとすると直ちにエラーが発生する Release<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } 現在サポートされているすべての ServiceNow リリース(Vancouver、Xanadu、Yokohama、Zurich、Australia、およびそれ以降) Cause<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } ファイル(CSV、Excel、XML など)からデータをインポートする際、ServiceNow はソースファイル内に存在する構造およびコンテンツに基づいて、sys_dictionary テーブル内に列を動的に作成します。 ソースファイルに、バイナリデータ、不適切にエンコードされた文字、標準以外の特殊文字、埋め込まれたファイルシグネチャなどの破損したデータまたは無効なデータが含まれている場合、ServiceNow は列名およびラベルに無効な XML 文字を含む列を作成します。これらの無効な XML 文字(Unicode: 0x3 など)は、XML の解析標準に違反します。 システムが sys_dictionary からこれらの破損した列定義を解析しようとすると、XML パーサーが無効な文字に遭遇して失敗し、その結果、Import Set Table 全体が読み取り不可かつアクセス不可になります。 技術的詳細: Unicode 文字 0x3(End of Text 制御文字)および類似の制御文字は、XML 1.0 仕様において XML 要素コンテンツ内で許可されていません。ServiceNow が表示またはアクセスのために Import Set Table のスキーマをシリアル化しようとすると、XML パーサーがドキュメント構造を拒否します。 これはプラットフォームの不具合ではなく、無効な文字またはバイナリコンテンツを含む不正形式または破損したソースデータをインポートした結果です。 Resolution<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } 前提条件 Admin アクセス、または "admin" ロールを持つアクセス権(sys_dictionary テーブルへのアクセスに必要)テーブルスキーマを変更できることSystem Definition モジュールへのアクセス権 STEP 1: SYS_DICTIONARY 内の無効な列を特定する 管理者ユーザーとして ServiceNow インスタンスにログインします。System Definition > Tables and Columns > Columns に移動します。sys_dictionary テーブルビューが開きます。Table 列に XML エラーを表示している Import Set Table 名(例: "u_my_import_set")を入力します。フィルターボタンをクリックするか Enter キーを押して検索します。Import Set Table の列一覧を確認します。文字化けした文字、特殊記号、またはバイナリシグネチャを表示している列を探します。破損した列名の例: "PK�����!{'È"、"Content_Types"、または "[" と "]" を含み、判読できない文字を含む列。破損している各列の正確な sys_id を記録します(sys_id を確認するには行上にカーソルを合わせる必要がある場合があります)。参照およびトラブルシューティングのために、破損した列のスクリーンショットを取得します。 STEP 2: SYS_DICTIONARY から無効な列を削除する sys_dictionary のリストビューで、最初の破損した列の行をクリックして詳細フォームを開きます。フォームの下部までスクロールし、Delete ボタンをクリックします。削除確認が表示されたら承認します。sys_dictionary のリストに戻り、残りの各破損列について同じ手順を繰り返します。無効な文字を含む列、または不要なデータに見える列をすべて削除します。実際のデータフィールド名を含む正当な列は削除しないでください。すべての破損した列を削除したら、sys_dictionary テーブルを閉じます。 STEP 3: テーブルにアクセスできることを確認する Import Set Table リストに戻ります(例: System Integration > Staging Tables > [Your Import Set Table])。テーブルにアクセスできるようになり、XML エラーは表示されなくなっているはずです。まだエラーが表示される場合は、STEP 1~2 を繰り返し、すべての破損列が削除されていることを確認します。エラーが継続する場合は、ServiceNow サポートへお問い合わせください。 STEP 4: ソースデータをクリーンアップして検証する 元のインポートファイル(CSV、Excel、XML など)に戻ります。テキストエディタ(例: Notepad++)でファイルを開き、破損データの発生元を特定します。以下を確認します。 ファイルにバイナリデータまたは非テキストコンテンツが混在していないかファイルエンコーディングの問題がないか(UTF-8 または ASCII であり、バイナリ形式ではないことを確認)埋め込みファイルまたはアーカイブ(例: .zip、"[Content_Types].xml" などのシグネチャ)無効な特殊文字または制御文字非表示文字または破損したフィールド 無効な文字、バイナリデータ、またはエンコーディングの問題を削除または修正します。ファイル内のすべてのデータが標準的なテキスト形式および文字セットに準拠していることを確認します。ファイルに埋め込みファイル、圧縮アーカイブ、またはバイナリデータが含まれていないことを確認します。ファイルが別システムからエクスポートされた場合は、適切なテキストエンコーディングを指定して再度エクスポートします。 STEP 5: クリーンアップしたデータを再インポートする 新しい Import Set を作成するか、既存の破損したものをクリアします(削除して再作成)。クリーンアップおよび修正済みのソースファイルをアップロードします。列マッピングを確認し、フィールドが正しく対応付けられていることを確認します。検証のため、最初に test/dev インスタンスでインポート処理を実行します。dev で成功したら、本番環境でインポートを実行します。Import Set Table にアクセスできることを確認します。列名が適切に設定され、判読可能であることを確認します。インポートされたすべてのレコードが表示およびアクセス可能であることを確認します。 STEP 6: 同様の問題を監視する 同じソースファイルを再インポートする場合は、警告がないかインポートログを監視します。インポート統計を確認し、すべての行が正常にインポートされたことを確認します。Import Set Table のレコードを抜き取り確認し、データ品質を確認します。エラーが再発する場合、ソースファイル内の別のフィールドに追加の破損データが存在する可能性があります。 PREVENTION & BEST PRACTICES インポート前にソースファイルを検証する: ファイルエンコーディングを確認し、バイナリデータを削除し、データが想定された形式に準拠していることを確認する定義済み列を持つインポートテンプレートを使用する: ソースデータから列を自動作成させるのではなく、事前に列構造を定義する最初に dev インスタンスでインポートをテストする: 本番データに対して実行する前に、必ず非本番環境で新しいインポートソースを検証するインポートログを監視する: データ品質問題の兆候がないか、インポート結果、警告、およびエラーログを確認するデータクレンジングを実施する: インポート前に ETL ツール、スクリプト、またはスプレッドシート機能を使用してソースデータをクリーンアップおよび正規化するファイル標準を確立する: インポートファイルに期待される列名、形式、データ型、および文字エンコーディングを文書化する元ファイルをアーカイブする: インポート後に問題が発生した場合のトラブルシューティング用として、ソースファイルのバックアップコピーを保持するファイル検証を実装する: ファイル整合性チェック(チェックサム、ファイルサイズ制限など)を使用して破損したアップロードを検出するファイル種類を制限する: 許可するインポートファイル形式を CSV、Excel、XML に限定し、不明なファイル形式をブロックするエンコーディング仕様を使用する: ソースシステムからエクスポートする際に UTF-8 エンコーディングを明示的に指定する