2017-06-06 15 views
1

XMLファイルからデータを抽出しようとしています(ファイル形式は変更されません)。 XMLデータには、コンテンツとAppeareance情報の両方がHTMLタグの形で含まれているため、私の悲しみを引き起こしています。 XMLの関連部分は次のようになります。PHP/SimpleXMLを使用したXMLからのHTMLの抽出

<item> 
    <p>Some text</p> 
    <p> Some more text</p> 
    <p><i>This</i> is important text.</p> 
</item> 

ノードの内容は、後でDBに挿入するための文字列として必要です。テキストは常に<のp>タグに包まれたので、私はこのコードを使用して、それらを反復処理しようとしている。

$namediscussion = ''; 

foreach($sectionxml->xpath('//p') as $p) 
{ 
    $namediscussion = $namediscussion . $p . '</br>'; 

} 

echo $namediscussion 

($のsectionxmlはximplexml_load_string(の出力である)親ノードから)。

Some text 
Some more text 
is important text. 

注記イタリック体にあった行方不明の単語:

問題は、私は$ namediscussionエコーとき、私が得るものであるということです。これをどうすれば保存できますか?私はSimpleXMLを使いたいと思っていますが、DOMに行く必要がある場合はそれでも問題ありません。直接の文字列操作でも動作しますが、SimpleXMLノードから文字列全体を抽出することはできません。

大変助けになりました。あなたはsimplexmlelementをキャストされ、ここで説明したように、これが不足している単語を修正するにはsimplexmlelement::__toString

Does not return text content that is inside this element's children. 

要素の子の内容を破棄します

答えて

1

下に示すように、文字列のキャストの代わりに simplexmlelement::asXMLを使用することができます
$namediscussion = $namediscussion . strip_tags($p->asXML()) . '</br>'; 
+0

それはトリックでした!ありがとう! – jgalak

関連する問題