2017-11-27 17 views
0

私はブログでウェブサイトを作成しています。 PHPでPostgresデータベースを使用します。ブログ投稿にはそれぞれ複数のページがあります。 XMLデータフィールドに各投稿のすべてのページを保存します。PostgresデータベースからXMLタグの内容を取得する

明確にするために、各投稿はデータベーステーブルに1つの行を持ちます。各行には、postID、date、htmlDataなどのいくつかのフィールドがあります。

htmlData列はXMLデータフィールドになります。異なるページのhtmlデータは、htmlPageタグ(下記参照)で保存/表現されます。

ここで、特定のhtmlPageタグの内容をそのまま抽出/選択するにはどうすればよいですか?この例の表(あなたが実際のテーブルに多くの考えを与えたいと思うでしょう)を考えると

<htmlPage id="1"> 
 

 
    <div class="pageContainer"> 
 

 
    <div id="pageContents"> 
 

 
     <h1>Introduction</h1> 
 

 
     <p> 
 

 
     Text here. <img src="/images/silver.png" alt="silver"> 
 

 
     </p> 
 

 
    </div> 
 

 
    </div> 
 

 
</htmlPage> 
 

 

 
<htmlPage id="2"> 
 

 
    <div class="pageContainer"> 
 

 
    <div id="pageContents"> 
 

 
     <p> 
 

 
     Text here. <img src="/images/gold.png" alt="gold"> 
 

 
     </p> 
 

 
    </div> 
 

 
    </div> 
 

 
</htmlPage>

+0

期待した結果を得るために、試した内容(コードなど)を投稿してください。 SOは、人々があなたのコーディングを行う場所ではなく、起こっていることをよりよく理解するのに役立つサイトです。 –

答えて

0

:ここ

CREATE TABLE content.xmlexample 
(
    content_id character varying, 
    xml_content xml 
) 

は、これらのレコードが挿入される可能性があります方法の例です。ここでCDATA tagの使用に注意することは非常に重要です。 CDATAの中にあなたのコンテンツを囲むとXMLパーサを壊すから特定の文字を防ぐことができます:

SELECT xml_content 
FROM content.xmlexample 
WHERE content_id = '1'; 

SELECT xml_content 
FROM content.xmlexample 
WHERE content_id = '2'; 

このすべての脚注:

INSERT INTO content.xmlexample (content_id, xml_content) VALUES ('1', '<?xml version="1.0" encoding="UTF-8"?> 
<htmlpage><![CDATA[<htmlPage id="1"> 
    <div class="pageContainer"> 
    <div id="pageContents"> 
     <h1>Introduction</h1> 
     <p> 
     Text here. <img src="/images/silver.png" alt="silver"> 
     </p> 
    </div> 
    </div>]]></htmlpage>'); 

    INSERT INTO content.xmlexample (content_id, xml_content) VALUES ('2', '<?xml version="1.0" encoding="UTF-8"?> 
<htmlpage><![CDATA[<htmlPage id="2"> 
    <div class="pageContainer"> 
    <div id="pageContents"> 
     <h1>Introduction</h1> 
     <p> 
     Text here. <img src="/images/gold.png" alt="gold"> 
     </p> 
    </div> 
    </div>]]></htmlpage>'); 

そして、ここでは外にデータを選択する例であり、XMLの中にHTMLを埋め込むには、私の経験では、潜在的に悪い考えです。私は私の答えでこれを考慮していない。 Here is an articleは、あなたのマークアップ内に逃げたマークアップが詰まる危険のいくつかを説明しています。

関連する問題