2

XmlTextWriterを使用してC#アプリからXMLを生成しています。最初の入力はこの形式の1"になりますが、何にでも置き換えることができます。最終的には次のようになります1"が、取得し続けます。1"

C#

    xml.WriteStartElement("data");
    xml.WriteAttributeString("type", "wstring");
    xml.WriteString("1"");
    xml.WriteEndElement();

ハ!ここで必要なXMLを通過すると、それが1 "に変換されます。しかし、実際に表示する必要があるの1"は、コードの3行目の実際です。

/とØも使用する必要があります。どうすればこれができますか、ありがとう。

4

1 に答える 1

5

最終的に1"になる必要がありますが、1"を取得し続けます。

これは、XMLAPIの仕事をしようとしているためです。

あなたの仕事はテキストだけを提供することです-その仕事はエスケープとXMLがする必要がある他のすべてを処理することです。

だからあなたはただ使うべきです

xml.WriteString("1\"");

...ここで、バックスラッシュはC#の文字列リテラル処理のためだけのものであり、XMLとは何の関係もありません。書き出そうとしている論理値は、1の後に二重引用符が続きます。エスケープされているかどうかは、それ"を処理するものとは無関係である必要があります。敏感すぎるものがある場合は、それを修正する必要があります

これがどうしても必要な場合(そして、もう一度強くお勧めします)、次のことを試してください。

xml.WriteString("1");
xml.WriteEntityRef("quot");

(実際に使用する必要がある状況でない限り、LINQ to XMLを使用することもお勧めしますXmlWriter。これにより、作業が大幅に簡素化されます。)

于 2012-12-07T18:42:46.450 に答える