2016-04-19 15 views
0

ほとんどのレコードでうまく動作するSQL XMLプログラムを構築しましたが、そのデータのためにわずかなレコードにしか分類されません。XMLの構文解析エラー:整形式でない - これは文字のためです

不要な文字の問題をどのように解決できますか? Oracle11gデータベースのSQLからXMLファイルを生成していますが、いくつかのレコードで以下のメッセージが表示されます。レコードの1つは、 "ô9.96+ .99.99 P & H"を含むXMLタグフィールドのタイトルを示します。

<?xml version="1.0" encoding="UTF-8"?> 
    <AV-XML xmlns="http://www.iceservices.com/0.7/AV-XML" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.iceservices.com/0.7/AV-XML AV-XML.xsd"> 
<Delivery> 
    <supplierType>ADMIN-AGENCY</supplierType> 
    <versionId>0.7</versionId> 
    <creationDateTime>2016-04-19T13:47:57+0100</creationDateTime> 
    <otherInformation>MIGRATION FIRST DELIVERY</otherInformation> 
</Delivery> 
<Message> 
<messageSequenceId>1</messageSequenceId> 
<messageType>NEW</messageType> 
<otherInformation>MIGRATION FIRST DELIVERY</otherInformation> 
<Production> 
    <prodCategoryType>COMMERCIAL</prodCategoryType> 
    <prodStatusType>SKELETON</prodStatusType> 
    <prodActive>true</prodActive> 
    <prodCueStatusType>NO</prodCueStatusType> 
    <prodTvInhouse>Y</prodTvInhouse> 
    <prodTotalDuration>PT3M</prodTotalDuration> 
    <priorityValue>1</priorityValue> 
    <prodTitle> 
    <title>CLASSIC LOVE SONGS OF RN R</title> 
    <titleType>ORIGINAL</titleType> 
    </prodTitle> 
    <prodTitle> 
    <title>ô9.96 + õ.99 P&amp;H</title> 
    <titleType>CAMPAIGN</titleType> 
    </prodTitle> 
    <prodId> 
    <idType>SOCIETY-ID</idType> 
    <id>75125334</id> 
    </prodId> 
    <prodId> 
    <idType>CLOCKID</idType> 
    <id>TMECSRL505180</id> 
    </prodId> 
    <prodAuthorizedIp> 
    <LASTNAME>BACC</LASTNAME> 
    </prodAuthorizedIp> 
</Production> 
</Message> 
</AV-XML> 

これをFirefoxやIEで開こうとすると、次のようなメッセージが表示され、エラーが表示されます。上記のH9.96 + .99.99 P & Hです。

XML Parsing Error: not well-formed 
Location: file://///data2/data/Download/d7prdv1/prsrepreports /test_error_1.xml 
Line Number 26, Column 16:  <title>49.96 + �5.99 P&amp;H</title> 

この問題を回避するには、Oracleの置換機能を使用して文字をより受け入れやすいものに置き換える必要がありますか?

+0

私は決算 '' タグが表示されません。 – ruudvan

+2

このXMLを生成したコードを表示してください。 – ThinkJet

+0

ruudvan申し訳ありませんが含まれている投稿を書式設定することを忘れました –

答えて

0

入れ子になったREPLACE文が必要なものだと思います。置き換えたい文字のASCIIコードを知っているだけです。あなたは 'ô'と 'õ'を書いていたので、私はそれらと一緒に仕事をしました。

http://www.techonthenet.com/oracle/functions/replace.php

create table monkey(
    string1 VARCHAR2(30 CHAR) 
); 

insert into monkey values ('ô9.96 + õ.99 P&H'); 

select ASCII('ô') from dual; 
--50100 

select ASCII('õ') from dual; 
--50101 

select string1, REPLACE(REPLACE(string1, chr(50101), ''), chr(50100), '') from monkey; 

または単に:

select string1, REPLACE(REPLACE(string1, chr(ASCII('ô')), ''), chr(ASCII('õ')), '') from monkey; 
+0

交換機能が働いたので、ありがとうunningviolent –

+0

ようこそ! – runningviolent

0

2つの文字は&ocirc;&otilde;またはフィッティング12月又は進コードでエスケープすることができます。これは、読者に依存...ここ

ルック:http://www.w3schools.com/charsets/ref_utf_latin1_supplement.asp

さらにあなたはUTF-16にエンコードを変更しようとするかもしれません。現時点では、XMLはUTF-8に設定されており、2つのO派生語は基本文字セットに含まれていません。

これはOracleの処理方法がわかりませんが、SQL Serverでは大きかったあなたがユニコードを宣言しているかどうかの違い。最初の呼び出しがうまくいくのエラー(不正な文字)、二(先頭の「N」とUTF-16を見て)投げるでしょう:

DECLARE @xml XML='<?xml version="1.0" encoding="UTF-8"?><root><title>ô9.96 + õ.99 P&amp;H</title></root>'; 
DECLARE @xml1 XML=N'<?xml version="1.0" encoding="UTF-16"?><root><title>ô9.96 + õ.99 P&amp;H</title></root>'; 
関連する問題