2011-01-03 15 views
0

私はこのような特定の質問を見つけることができませんので、私は投稿しています。うまくいけば、これは一般的な使用になります。タグを使って特定の名前空間のXML要素全体を取得する方法は?

私は「<w:t> data data.....</w:t>」のXMLタグを含むファイルを持っています。あまりにも多くの他のものがあります。私は<w:t></w:t>タグ内のすべてをキャプチャする必要があります。

私は続行する方法についての提案を聞いていただければと思います。それは他のタグ/データの検索にあなたを制限するものではありませんので、DomXmlを使用して、事前に

おかげ..

デビッド

+2

あなたが使用する必要があります:あなたはあなたのXML文書に wのの名前空間を指定しない場合

$string = '<?xml version="1.0"?> <root xmlns:w="http://example.com/"> <w:t>some data...</w:t> <not-captured>data data</not-captured> <w:t>more data...</w:t> </root>'; $doc = simplexml_load_string($string); foreach ($doc->xpath('//w:t') as $elem) { var_dump($elem->asXML()); } 

を、SimpleXMLElement::registerXPathNamespace使用 – KingCrunch

+0

PHPでXMLファイルを解析し、その中のデータをキャプチャすることに関して、SOにはかなりの質問があります。 http://stackoverflow.com/search?q=%5Bphp%5D+xml+parsing –

+0

ありがとうございます。これは、(350ページ)MSWordドキュメントからの1回の変換です。これは、xmlまたはmysqlファイルとして終了します。 –

答えて

-1

は好ましい選択肢です。これらのタグは、あなたが必要とする唯一のものであれば、私はpreg_match_allのために行くだろうので

しかし、正規表現を使用してははるかに少ないコードになります。

$string = '<?xml version="1.0"?> 
<root> 
    <w:t>some data...</w:t> 
    <not-captured>data data</not-captured> 
    <w:t>more data...</w:t> 
</root> 
</xml>'; 

preg_match_all('/<w\:t>.*<\/w\:t>/is', $string, $matches); 
var_dump($matches); 

応答:

array(1) { 
    [0]=> 
    array(2) { 
    [0]=> 
    string(23) "<w:t>some data...</w:t>" 
    [1]=> 
    string(23) "<w:t>more data...</w:t>" 
    } 
} 

編集:/前の回答に追加

+0

イワンありがとう...私はそれを得た..私はここにスクリプトを投稿することはできません私はノブですが、あなたのコードの行に沿っています。 –

+1

'*'が貪欲であるため、結果は得られません。 – Gumbo

1

はRegexために添加改質剤である、私は私の後に小文字の「s」を含むであろう改行を処理するために終了します。下記氏ガンボによって

良い点。はいまた

例えば予想通り、それ以外の場合は動作しません表現が少ない貪欲にするために「S」の後に大文字で「U」を追加します

preg_match_all( '/.* < \/\ W:T>/ISU'、$文字列、$が一致します)。

+0

申し訳ありませんが、私はそれを逃しました:。改行文字以外の文字を表します。/s修飾子はその動作とを抑制します。トラップの新しいライン、私は学ぶことがたくさんある –

+0

ニース1を、今、私は私の持っているで欠けありがとうございました - 非常に粗い - 。しかし準拠したXMLファイルを、私は、サブタグを割り当てる方法を把握する必要があり特定の要素。要素はギリシャにあるので、簡単ではありません.. –

+0

しかし正規表現と –

1

あなたは本当にSimpleXMLのようなXMLのDOMパーサを使用する必要があります

$doc->registerXPathNamespace('w', 'http://example.com/'); 
関連する問題