這開始讓我感到非常不好。我有這樣的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