DOMXPath — запрос

XML-файл:

   <Domain Domaindetails="This tree display the domain we work">Root element
<Insurance>
    <InsuranceQ>
        <Devs>4</Devs>
        <QA>1</QA>
        <Total>5</Total>
    </InsuranceQ>
    <?billResource bill()?>
    <QuoteX/>
    <ProgressiveLeads>
       <Devs>3</Devs>
       <Total>6</Total>
       <QA>3</QA>
    </ProgressiveLeads>
</Insurance>
<BI>
    <MoboM/>
    <CloudFW>
        <Devs>4</Devs>
        <QA>4</QA>
        <Total>8</Total>
    </CloudFW>
    <?billResource bill()?>
</BI>
<Ecommerce>
    <USEcom/>
    <LXEcom/>
</Ecommerce>
<extrainfo>Co > S&S </extrainfo>
</Domain>

Обход проектов в домене страхования. Поэтому написал следующий код

$dom = new DOMDocument('1.0');
$dom->load('project.xml');
$xpath = new DOMXPath($dom);

$nodeList=$xpath->query('//Domain/Insurance');

foreach($nodeList as $node)
{

    echo $node->nodeValue;  
    echo '<br/>';
}

Он показывает пустой результат. У меня что-то не так в моем XML? Приведенный выше код приводит к 415 [devs, qa, total nodes], что не является ожидаемым результатом.

Я хочу перечислить InsuranceQ QuoteX Progressivelead в качестве вывода.

Может кто-нибудь подскажет, что я делаю не так...

Спасибо, Прити.


person user269867    schedule 16.05.2011    source источник


Ответы (1)


Во-первых, форматированный код (XML) поможет быстрее разобраться в проблеме. В порядке. Возвращаясь к вашему вопросу, вы можете попробовать //Domain/Insurance/child::* получить всех дочерних элементов узла <Insurance>.

Ваш XPath не вернул ожидаемых результатов, потому что вы не выбираете дочерние элементы узла <Insurance>, вы просто выбираете узел <Insurance>.

Надеюсь это поможет

person Vaman Kulkarni    schedule 16.05.2011