1

指定された HTML ドキュメントには、次のようなフォームが含まれています。

<form>
    <div controlType="yyy1" xmlTag="zzz1">...</div>
    <div controlType="yyy2" xmlTag="zzz2">...</div>
</form>

このデータを収集する必要があります:

$div[0]      = array('yyy1', 'zzz1');
$div[1]      = array('yyy2', 'zzz2');

必要な属性のペアは、要素ごとにcontrolTypeとです。xmlTagdiv

4

4 に答える 4

1

次の 2 つの XPath 式を評価します

/form/div[$k]/@controlType

と:

/form/div[$k]/@xmlTag

移入する$div[$k -1]

ここ$kで、数字 1、2、...、に置き換える必要があります。count(/form/div)

上記の 2 つの式を 1 つの XPath 式に結合したくなるかもしれません。

/form/div[$k]/@*

ただし、XPath の実装では属性を任意の順序で返すことができ (XPath は属性間の順序を定義しません)、2 つの属性のどちらが選択されたノードで最初に来て、どちらが 2 番目に来るかは明確ではありません。

于 2012-09-04T03:05:09.643 に答える
0
@$url = "http://XXX.xom"
$path     = "//div[@class='sb_tlst']//a";
$contents = get_contents($url, $path);
foreach ($contents as $value) 
{ 
    /* do something */
}
于 2012-09-04T03:48:47.417 に答える
0

それが助けになるなら私の2セント

            var doc = '<form xmltag="xxx"><div controltype="yyy1" xmltag="zzz1">...</div><div controltype="yyy2" xmltag="zzz2">...</div></form>';

        var result = [];

        $(doc).children().each(function () {
            var ctrl = $(this);
            if (ctrl.is('div')) {
                result.push([ctrl.attr('controlType'), ctrl.attr('xmlTag')]);
            }
        });
于 2012-09-04T03:26:58.083 に答える
0

@dimitre-novatchev による優れたアイデア提案に基づく私の最終的な解決策:

$res             = $xpath->query("//form//div/@xmltag"); // OBS: xmltag not xmlTag
$total_fields    = $res->length;

for ($i = 1; $i <= $total_fields; $i ++ )
{
    $r       = $xpath->query("//form//div[$i]/@xmltag");
    $xmltag  = $r->item(0)->value;

    $r           = $xpath->query("//form//div[$i]/@controltype");
    $controltype = $r->item(0)->value;

    $div[$i - 1] = array(
        'xmltag'         => $xmltag,
        'controltype'    => $controltype
    );
}

出力サンプル:

array (
  0 => 
  array (
    'xmltag' => 'Case_Number',
    'controltype' => '',
  ),
  1 => 
  array (
    'xmltag' => 'Plaintiff',
    'controltype' => 'RadioButtons',
  ),
  2 => 
  array (
    'xmltag' => 'Plaintiff_Name',
    'controltype' => '',
  ),

美しい!

于 2012-09-04T05:16:00.583 に答える