0

私は Delphi XE5 に取り組んでおり、IDHTTP を使用してサーバーから XML を取得しています。XML の取得は正常に機能しますが、壊れた文字がいくつかあります。文字は '•' (箇条書き) です。他は問題ありませんが、箇条書きが壊れています。

以下のようにIDHTTPを作成しました。

idhttps := TIdHTTP.Create();
idhttps.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
idhttps.IOHandler.DefStringEncoding := IndyTextEncoding(TEncoding.UTF8);
idhttps.HandleRedirects := True;
idhttps.ConnectTimeout := 5000;
idhttps.Request.USERNAME := 'USERNAME';
idhttps.Request.PASSWORD := 'PASSWORD';
idhttps.Request.BasicAuthentication := True;
idhttps.Request.Accept := 'text/xml';

そして、以下のようなxmlを取得します:

SS := TStringStream.Create('', TEncoding.UTF8);

try
  self.GetIdHTTPForLexicomp.Get(URL, SS);
  XMLDoc := TXMLDocument.Create(nil);
  XMLDoc.LoadFromStream(SS, TXMLEncodingType.xetUTF_8Like);
finally
  SS.Free;
end;

XML では、箇条書きは次のように表示されます。

? アナフィラキシー/過敏症: 過敏症反応を引き起こす可能性があります。

XML ヘッダーは以下のとおりです。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

何を確認すればよいですか?

更新: XML スニペットを追加しました。スタイル用の XSL ファイルが必要ですが、この場合は問題ないと思います。'?' キャラ崩壊です。

<?xml version="1.0" standalone="yes"?>
<ns2:monogragh>
  <monograghFields>
    <field fieldId="234837" fieldTypeCode="war" created="2005-04-07T17:28:33Z" modified="2014-10-02T11:32:57Z" sectionId="0">
      <fieldName>Warnings/Precautions</fieldName>
      <content>
        <div id="war" class="block">
          <p style="text-indent:-2em;margin-left:2em;text-align:justify;">
            <b>
              <i>Concerns related to adverse effects:</i>
            </b>
          </p>
          <p style="text-indent:-2em;margin-left:4em;text-align:justify;">
            ? Anaphylaxis/hypersensitivity: May cause hypersensitivity reactions, including anaphylaxis; use with caution in patients with anaphylactic disorders.
          </p>
        </div>
      </content>
    </field>
  </monograghFields>
</ns2:monogragh>

間違った情報を流したようです。キャプチャした xml スニペットを添付しました。最初のものは REST クライアント ツールを使用してブラウザから取得した結果であり、最後のものは idhttp を介して xml を取得した結果です。

REST クライアント ツールを使用してブラウザーから XML を取得します。

idhttp による XML の取得

4

1 に答える 1