1

次のように、 aDataTableが に変換されるアプリケーションに機能を追加しました。XML

dtResults.WriteXml(fileName);

_x0020_出力された XML ドキュメント内のスペースの代わりに追加されています。

_x0020_コードなしで XML ファイルを生成することは可能ですか? つまり、その方法または類似の方法を使用して XML ファイルを生成し、実際にスペースを保持することはできますか?

これはデータグリッドです:

ここに画像の説明を入力

結果の XML は次のとおりです。

<Customers>
    <Customer_x0020_Name>Sean</Customer_x0020_Name>
  </Customers>
  <Customers>
    <Customer_x0020_Name>John</Customer_x0020_Name>
  </Customers>
  <Customers>
    <Customer_x0020_Name>Sarah</Customer_x0020_Name>
  </Customers>
  <Customers>
    <Customer_x0020_Name>Mark</Customer_x0020_Name>
  </Customers>
  <Customers>
    <Customer_x0020_Name>Norman</Customer_x0020_Name>
  </Customers>
4

3 に答える 3

7

列の名前にスペースが含まれています。XML 要素名にスペースを含めることはできません。XML では、次のように要素名と属性名を区切るためにスペースが使用されます。

<ElementName Attribute1="value" />

このDataTable.WriteXmlメソッドは、一貫した方法で XML ファイルを書き出そうとします。これにより、DataTable後で別のオブジェクトを使用して XML をロードし、元のファイルの正確なコピーにできるだけ近づけることができます。したがって、変換中に不正な文字が失われないように、不正な文字をその 16 進値に置き換えます。

したがって、別の方法で XML に書きたい場合は、次のいずれかを行う必要があります。

  • DataTableスペースが含まれないように列の名前を変更します
  • XDocumentXmlDocumentXmlWriter、またはを使用して自分で XML を手動で出力し、必要XmlSerializerに応じて出力をフォーマットします。
  • 今と同じように XML を出力しますが、XSLT スクリプトを実行してフォーマットを修正します。
于 2013-02-18T20:28:11.050 に答える
2

あなたが望んでいることは不可能だと思います。変数名にスペースを含めることができないように、XML 要素名にスペースを含めることはできないと思います。スペースである必要がある理由は何ですか?

実際にスペースが必要な場合 (これにより xml が解析に使用できなくなると思います)、ファイル内で検索と置換を実行するだけです。

_x0020_データを読み込んで DataTable に再度表示するために保存している場合は、データを読み込んでスペースに置き換えたら、列の名前を変更します。

于 2013-02-18T20:26:52.793 に答える
0

私も同じ問題に直面しています。スペースのある列を含む Excel ファイルからデータをエクスポートしています。したがって、私の列にもスペースが含まれています。そこで、以下の方法を試しました。

StringWriter strXML = new StringWriter();
dtPartOriginalData.WriteXml(strXML, XmlWriteMode.IgnoreSchema, false);
strMessages = strXML.ToString().Replace("_x0020_", "");

_x0020_これにより、xmlが置き換えられ、生成されます。ただし、この xml を使用して同じデータテーブルを構築することはできません。その回避策は、提案として追加することを考えました。ありがとうございました。

于 2015-02-23T15:53:36.890 に答える