这开始让我感到非常不好。我有这样的XML代码:xPath找不到任何东西,但*
用正确的命名空间
<?xml version="1.0" encoding="utf-8"?>
<Infringement xsi:schemaLocation="http://www.movielabs.com/ACNS http://www.movielabs.com/ACNS/ACNS2v1.xsd" xmlns="http://www.movielabs.com/ACNS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Case>
<ID>...</ID>
<Status>Open</Status>
</Case>
<Complainant>
<Entity>...</Entity>
<Contact>...</Contact>
<Address>...</Address>
<Phone>...</Phone>
<Email>...</Email>
</Complainant>
<Service_Provider>
<Entity>...</Entity>
<Address></Address>
<Email>...</Email>
</Service_Provider>
<Source>
<TimeStamp>...</TimeStamp>
<IP_Address>...</IP_Address>
<Port>...</Port>
<DNS_Name></DNS_Name>
<Type>...</Type>
<UserName></UserName>
<Number_Files>1</Number_Files>
<Deja_Vu>No</Deja_Vu>
</Source>
<Content>
<Item>
<TimeStamp>...</TimeStamp>
<Title>...</Title>
<FileName>...</FileName>
<FileSize>...</FileSize>
<URL></URL>
</Item>
</Content>
</Infringement>
更新,此PHP代码:
<?php
$data = urldecode($_POST["xml"]);
$newXML = simplexml_load_string($data);
var_dump($newXML->xpath("//ID"));
?>
我甩了只$ newXML,并得到吨的数据,但只有xPath我运行,返回任何东西,但空数组是“*”
是不是“ID”应该找到文档中的所有ID节点?为什么它不工作?
感谢
问题很可能是命名空间('xmlns:xsi')。不知道如何进一步帮助,但不足的技能':P' – Kobi 2010-09-15 16:19:00
不确定,但尝试用'ns'替换'xmlns'。 (受[此PHP.net上的此评论]启发(http://nl2.php.net/manual/en/simplexmlelement.xpath.php#96153)。 – Lekensteyn 2010-09-15 16:26:48
我可能听起来像一个狂热但恕我直言删除命名空间,使XPath查询的工作仅仅是用来克服任何的编程工具的缺陷或程序员的无能XML打破黑客。命名空间是XML中的一个基本概念。任何想使用XML的人都应该学会理解它们。 – jasso 2010-09-15 16:43:54