English 中文(简体)
带有 xPath 的 PHP 查询 XPath
原标题:PHP Query XML with xPath
  • 时间:2012-05-25 11:51:17
  •  标签:
  • php
  • xml
  • xpath

我有如下XML结构:

<Tickets>
<EventsPoints>
      <Event ID="23">
           <PerformanceName>U2</PerformanceName>
           <EventDate>25/05/2012</EventDate>
           <EventPrice>75.00</EventPrice>
      </Event>
      <Event ID="27">
           <PerformanceName>Jedward</PerformanceName>
           <EventDate>28/05/2012</EventDate>
           <EventPrice>20.00</EventPrice>
      </Event>
            <Event ID="27">
           <PerformanceName>Rolling Stones</PerformanceName>
           <EventDate>03/12/2012</EventDate>
           <EventPrice>80.00</EventPrice>
      </Event>
</EventsPoints>
</Tickets>

基本上,我想在 XML 中搜索某个性能名称, 称“ U2 ”, 然后返回整个 XML 块( 即该性能名称、 事件日期和价格 - 全部以 XML 格式格式化, 保存在一个单独的 xml 文件) 。

这是我的php代码,但似乎没有正确提取数据:

$srcDom = new DOMDocument;
$srcDom->load( /var/www/html/xml/searchfile.xml );
$xPath = new DOMXPath($srcDom);


foreach ($srcDom->getElementsByTagName( Event ) as $event) {

    $dstDom = new DOMDocument( 1.0 ,  utf-8 );
    $dstDom->appendChild($dstDom->createElement( EventsPricePoints ));
    $dstDom->documentElement->appendChild($dstDom->importNode($event, true));

    $allEventsForVenue = $xPath->query(
        sprintf(
             /Tickets/EventsPoints/Event/PerformanceName[.="U2"] 
        )
    );

    foreach ($allEventsForVenue as $event) {
        $dstDom->documentElement->appendChild($dstDom->importNode($event, true));
    }

    $dstDom->formatOutput = true;
    $dstDom->save(sprintf( /var/www/html/xml/searchresults1.xml ));
}
最佳回答

您的 XPath 在想要父元素时会得到 < code> performanceName 元素。 更改为

/Tickets/EventsPoints/Event/PerformanceName[.="U2"]/..

/Tickets/EventsPoints/Event[PerformanceName[.="U2"]]

或import

$event->parentNode

另外,您不需要第一个 foreach 。删除它,并将写着 $dstDom 的代码移动到XPath 结果的代码中。见 > http://codepad.org/zfOZXyc/a >

另见:

问题回答

暂无回答




相关问题
Brute-force/DoS prevention in PHP [closed]

I am trying to write a script to prevent brute-force login attempts in a website I m building. The logic goes something like this: User sends login information. Check if username and password is ...

please can anyone check this while loop and if condition

<?php $con=mysql_connect("localhost","mts","mts"); if(!con) { die( unable to connect . mysql_error()); } mysql_select_db("mts",$con); /* date_default_timezone_set ("Asia/Calcutta"); $date = ...

定值美元

如何确认来自正确来源的数字。

Generating a drop down list of timezones with PHP

Most sites need some way to show the dates on the site in the users preferred timezone. Below are two lists that I found and then one method using the built in PHP DateTime class in PHP 5. I need ...

Text as watermarking in PHP

I want to create text as a watermark for an image. the water mark should have the following properties front: Impact color: white opacity: 31% Font style: regular, bold Bevel and Emboss size: 30 ...

How does php cast boolean variables?

How does php cast boolean variables? I was trying to save a boolean value to an array: $result["Users"]["is_login"] = true; but when I use debug the is_login value is blank. and when I do ...

热门标签