一部の XML タグ内のテキストを返す正規表現を作成しようとしています。たとえば、この形式のファイルがある場合
<name>Joe Blog</name>
<email>abc@sample.com</email>
<address>123 sample st</address>
住所フィールドのテキストを抽出するにはどうすればよいですか?
これについての助けをいただければ幸いです。ありがとう、
一部の XML タグ内のテキストを返す正規表現を作成しようとしています。たとえば、この形式のファイルがある場合
<name>Joe Blog</name>
<email>abc@sample.com</email>
<address>123 sample st</address>
住所フィールドのテキストを抽出するにはどうすればよいですか?
これについての助けをいただければ幸いです。ありがとう、
この式はアドレス値を取得します
<address>(.*?)<\/address>
それを最初のキャプチャ グループに配置します。
サンプルテキスト
<name>Joe Blog</name>
<email>abc@sample.com</email>
<address>123 sample st</address>
マッチ
[0][0] = <address>123 sample st</address>
[0][1] = 123 sample st
ほとんどの言語には html 解析ツールがあります。たとえば、PHP では次を使用してこれを行うことができます。
$dom = new DOMDocument();
$dom->loadHTML($your_html_here);
$addresses= $dom->getElementsByTagName('address');
foreach($addresses as $address) {
$address = $address->innertext;
// do something
}
自分で作成する必要がありますか、それとも tinyxml2 を使用できますか?
SAX パーサーなしで tinyxml2 を使用していて、ドキュメントを知っている場合は、次のようにしてみてください。
/* ------ Example 2: Lookup information. ---- */
{
XMLDocument doc;
doc.LoadFile( "dream.xml" );
// Structure of the XML file:
// - Element "PLAY" the root Element, which is the
// FirstChildElement of the Document
// - - Element "TITLE" child of the root PLAY Element
// - - - Text child of the TITLE Element
// Navigate to the title, using the convenience function,
// with a dangerous lack of error checking.
const char* title = doc.FirstChildElement( "PLAY" )->FirstChildElement( "TITLE" )->GetText();
printf( "Name of play (1): %s\n", title );
// Text is just another Node to TinyXML-2. The more
// general way to get to the XMLText:
XMLText* textNode = doc.FirstChildElement( "PLAY" )->FirstChildElement( "TITLE" )->FirstChild()->ToText();
title = textNode->Value();
printf( "Name of play (2): %s\n", title );
}
SAX パーサーを使用する場合、tinyxml2 はそのモードもサポートします。コードの例として、cocos2d-x に移動し、tinyxml2 を呼び出してサブクラス化する CCSAXParser クラスを見て、ほぼすべての XML ファイルを解析します。