2016-10-11 18 views
1

私はJavascriptとPHPを使っています。JSONからxmlへの特殊文字

私はこのようなJSONをjave:

[{"id": 32, "label": "Some Title", "type": "tinymce", "value": "<!DOCTYPE html>↵<html>↵<head>↵</head>↵<body>↵<p>asdasdasda&nbsp;30-09-2017</p>↵</body>↵</html>"}] 

実際のJSONオブジェクト/配列100ngのアレイです。私はXMLファイルを作成しています(.xls拡張子付き)は、Excelになります。通常の文字ではすべて正常に動作しますが、XMLファイルをExcelに読み込ませるために特殊文字を置くことはできません。私に何ができる?

何をすることができないです:別の形式を使用して

  • :私はとXMLと.xls拡張子を読む必要があります。
  • JSONからデータを変更します。外部です。このようなもので、私は私がやっているように

、間に合わXML結果:

Excel用正しくない
<ss:Row> 
    <ss:Cell> 
    <ss:Data ss:Type="String"></ss:Data> 
    </ss:Cell> 
    <ss:Cell> 
    <ss:Data ss:Type="String"></ss:Data> 
    </ss:Cell> 
    <ss:Cell> 
    <ss:Data ss:Type="String"></ss:Data> 
    </ss:Cell> 
    <ss:Cell> 
    <ss:Data ss:Type="String">Objeto del contrato</ss:Data> 
    </ss:Cell> 
    <ss:Cell> 
    <ss:Data ss:Type="String"><!DOCTYPE html> // I don't need all the html tags, I just need to put the text of the <p> tags. 
<html> 
<head> 
</head> 
<body> 
<p>asdasdasda&nbsp;30-09-2017</p> 
</body> 
</html></ss:Data>//here ends the wrong text coming from the JSON 
    </ss:Cell> 
</ss:Row> 

+0

質問を正しく理解していれば、JSONからXMLへの解析中にHTML文字をエンコードする必要がありますか? –

答えて

1

value属性の内容がHTMLであるため、非表示要素(DOMに接続されていない要素も含む)があり、innerHTMLをこの属性の内容に設定し、お気に入りのDOM操作ライブラリ(例:jQuery)を使用してp属性の内容を読み込みます。例えば

は、jQueryの使用:フォーマットが多少変化する場合、これは、より壊れやすいかもしれないが

var text = $('<div/>').html(o.value).find('p').text() 

の代わりに、あなたはちょうどその<p></p>との間の内容を一致させるために正規表現を使用することができます。その場合、HTMLエンティティをデコードする必要があります。これには、多くの場合、上記と同じことが必要です。

+0

私は正規表現を使用することを考えていましたが、あなたが言うように、内容は大きく異なります。それはTinymceエディタから来ているので、何でも構いません。私はあなたの最初のオプションを考えています... – pmirnd

0

あなたがPHPを使用しているという質問に言及したことから、PHPでJSONを処理してXMLファイルを作成すると仮定します。その場合

、あなたはHTML値から正確な要素を照会するDOMXPathを使用することができます。

$html = "<!DOCTYPE html> 
<html> 
<head> 
</head> 
<body> 
<p>asdasdasda&nbsp;30-09-2017</p> 
</body> 
</html>"; 

$doc = new DOMDocument; 
$doc->loadHtml($html); 
$xpath = new DOMXPath($doc); 
$query = '/html/body/p'; 
$entries = $xpath->query($query); 

print $entries->item(0)->nodeValue; //outputs 'asdasdasda 30-09-2017' 

これは、HTMLの構造は常に同じになることを想定しています。それが変更された場合は、$query変数を更新する必要があります。たとえば、文書内のすべてのpタグを選択するには、XPathクエリは//pになります。

+0

私はすでにPHPExcelでそれを持っていますが、今はPHPでそれをすることができません。私はReactJSを使用しています。私はjavascriptでビルドした文字列を連結してから、XMLファイルを作成しています。データはDOM上でhtmlとして表示されません。大きなJSONのデータベースから来ていますが、そこからいくつかのオブジェクトや配列が必要です。私はフォームのリストであるテーブルを持っていますが、そのテーブルの左の列にある「Excelにエクスポート」ボタンをクリックしてフォームをエクスポートしていますが、フォーム自体は表示されません。 – pmirnd