2012-03-19 8 views
1

私の人生の間、SimpleXMLを使用して特殊文字を解析する方法についての情報はありません。PHPとSimpleXMLのエスケープ文字

私が解析しようとしているいくつかのXMLを持っていますが、PHPは明らかにそれを好きではない:

<?xml version="1.0" encoding="UTF-8"?> 
<calendar-multiget xmlns:D="DAV:" xmlns="urn:ietf:params:xml:ns:caldav"> 
    <D:prop> 
    <D:getetag/> 
    <calendar-data/> 
    </D:prop> 
    <D:href>/davical/caldav.php/rwr26/home/c9bfc6b0-064e-4316-83fe-753db34e67ee.ics</D:href> 
    <D:href>/davical/caldav.php/rwr26/home/4e6e3500e89673.63357057.ics</D:href> 
    <D:href>/davical/caldav.php/rwr26/home/4e6e42d394f9e5.08299254.ics</D:href> 
</calendar-multiget> 

私は$D:href = new SimpleXMLElement($xmlstr);を行うことはできません。 XPathはこれをうまくやっていると仮定すると、それに満足していません。誰でも私がここで間違っていることを指摘できますか?

+1

で名前空間を登録します。あなたがしようとしていることについてもっと説明できますか? –

+0

タグの間に含まれる情報を取得しようとしています。 DavicalサーバーのCalDavレスポンスの一部であるため、XML自体を変更することはできません。 – user978122

+0

SimpleXMLElementを使用してサンプルを解析し、問題が発生している場所や取得したメッセージをもう少しお見せしましょう。 '$ D:href'のコロンが間違っていると仮定しよう:PHPの幸せ。 http://www.php.net/manual/en/language.variables.basics.php – dlamblin

答えて

1

basicsを見ると、変数名の中にコロンを入れることは無効であることがわかります。しかし、おそらくあなたが少しを示しているなら、私たちは何がうまくいかないのかをよりよく理解するでしょう。

+0

修正済みです。 xmlns = \ "DAV:\" xmlns = \ "urn:ietf:params:xml =" <?xml version = \ "1.0 \" encoding = \ "UTF-8 \"?> <カレンダーデータ/> /davical/caldav.php/rwr26/home/c9bfc6b0-064e-4316-83fe-753db34e67ee.ics /davical /caldav.php/rwr26/home/4e6e3500e89673.63357057.ics /davical/caldav.php/rwr26/home/4e6e42d394f9e5.08299254.ics 「。 $ root = new SimpleXMLElement($ xml); foreach($ root-> xpath( '// D:href')を$ nodeとして使用){ echo $ node。 "
"; } – user978122

+0

あなたの時間を無駄にして申し訳ありません。 PHPのXMLは私には多少外国語です。 – user978122

+0

私はそれを助けてうれしいです。 – dlamblin

1

あなたの変数名に特殊文字を使用することはできませんが、あなたがする必要はありませんXPathのregisterXPathNamespace