0

我搜索了高低,我找不到我的情况的直接答案。我有以下 XML:

<Tims xmlns="http://my.url.com/namespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="http://my.url.com/namespace http://my.url.com/xsd/Tims.xsd">
<Database xlink:href="http://my.url.com/xml/performance/database.svc">
    <ProjectID xlink:href="http://my.url.com/xml/Tvq11p/project.svc" title="Title1">Tvq11p</ProjectID>
    <ProjectID xlink:href="http://my.url.com/xml/Tvq10p/project.svc" title="Title2">Tvq10p</ProjectID>
    <ProjectID xlink:href="http://my.url.com/xml/Tvq8p/project.svc" title="Title3">Tvq8p</ProjectID>
    <ProjectID xlink:href="http://my.url.com/xml/Tvq9p/project.svc" title="Title4">Tvq9p</ProjectID>
    <ProjectID xlink:href="http://my.url.com/xml/Tvq5p/project.svc" title="Title5">Tvq5p</ProjectID>
    <ProjectID xlink:href="http://my.url.com/xml/Tvq15p/project.svc" title="Title6">Tvq15p</ProjectID>
    <ProjectID xlink:href="http://my.url.com/xml/Tvq2p/project.svc" title="Title7>Tvq2p</ProjectID>
    <ProjectID xlink:href="http://my.url.com/xml/Tvq3p/project.svc" title="Title8">Tvq3p</ProjectID>
    <ProjectID xlink:href="http://my.url.com/xml/Tvq12p/project.svc" title="Title9">Tvq12p</ProjectID>
    <ProjectID xlink:href="http://my.url.com/xml/Tvq13p/project.svc" title="Title10">Tvq13p</ProjectID>
    <ProjectID xlink:href="http://my.url.com/xml/Tvq14p/project.svc" title="Title11">Tvq14p</ProjectID>
    <ProjectID xlink:href="http://my.url.com/xml/Tvq1p/project.svc" title="Title12">Tvq1p</ProjectID>
    <ProjectID xlink:href="http://my.url.com/xml/Tvq4p/project.svc" title="Title13">Tvq4p</ProjectID>
    <ProjectID xlink:href="http://my.url.com/xml/Tvq6p/project.svc" title="Title14">Tvq6p</ProjectID>
    <ProjectID xlink:href="http://my.url.com/xml/Tvq7p/project.svc" title="Title15">Tvq7p</ProjectID>
</Database>
<Timestamp>2012-08-03T09:47:06-04:00</Timestamp>
<ExecutionTime>0.01</ExecutionTime>
</Tims>

我要做的就是提取每个ProjectID节点的属性和值..

我尝试过 DOM、SimpleXML 和 XMLParser。这一切都在 PHP 中,但是,我实际上对其他语言持开放态度,只要它们可以从 Unix 命令行执行。

谢谢!

更新 我的尝试:当我尝试失败时,我大部分都删除了我的尝试。我最新的迭代是这样的:

$return = send_request($requestUri, TIMS_REQUEST_TIMEOUT); // returns SimpleXMLElement
$return->registerXPathNamespace('e', 'http://www.webex.com/schemas/2002/06/service/event');
foreach($return->xpath('//ProjectID') as $project) {
    $project->registerXPathNamespace('xlink', 'http://www.w3.org/1999/xlink');
    print_r($project);
}

我的print_r从不开火。

4

1 回答 1

1

对于这样一个简单的 XML 模式,您不需要使用 XPath。试试这个:

foreach( $xml->Database->ProjectID as $el) {
    $attributes = $el->attributes( 'xlink', true);
    echo $attributes['href'] . ' ' . $el . "\n";
}

这是循环所有ProjectID节点并获取href属性并打印节点的内容。在修复属性中缺少的引号后,这对我有用。title="Title7

于 2012-08-03T15:02:16.293 回答