[英]PHP parsing xml xpath
XML
<person>
<description>
<p>blah blah blah</p>
<p>kjdsfksdjf</p>
</description>
</person>
<person>
<description>
k kjsdf kk sak kfsdjk sadk
</description>
</person>
我想解析描述,以便它返回其中的html標記。
我嘗試了這兩種方法,但均未成功
$description = ereg_replace('<description>|</description>','',$person->description->asXML());
$description = $person->description;
有什么建議么?
編輯
我要完成的工作是將xml文件導入到mysql數據庫中。 一切正常,都可以接受上面提到的內容...說明中的段落標記未顯示...並且它們必須存在。 mysql字段“描述”設置為文本字段。 如果我要解析XML以在瀏覽器中輸出,則$description = ereg_replace('<description>|</description>','',$person->description->asXML());
工作正常...這不是真的,但是當我嘗試導入mysql時。 我需要添加一些東西到mysql INSERT嗎? mysql_query("UPDATE table SET description = '$value' WHERE id = '$id'");
$xml = <<< XML
<person>
<description>
<p>blah blah blah</p>
<p>kjdsfksdjf</p>
</description>
</person>
XML;
$person = simplexml_load_string($xml);
foreach ($person->description->children() as $child) {
echo $child->asXml();
}
給
<p>blah blah blah</p><p>kjdsfksdjf</p>
請注意,SimpleXml無法對您顯示的第二個description元素執行相同的操作,因為它沒有文本節點的概念,例如
$xml = <<< XML
<person>
<description>
k kjsdf kk sak kfsdjk sadk
</description>
</person>
XML;
$person = simplexml_load_string($xml);
foreach ($person->description->children() as $child) {
echo $child->asXml();
}
將返回一個空字符串。 如果要使用統一的API,請使用DOM:
$xml = <<< XML
<people>
<person>
<description>
<p>blah blah blah</p>
<p>kjdsfksdjf</p>
</description>
</person>
<person>
<description>
k kjsdf kk sak kfsdjk sadk
</description>
</person>
</people>
XML;
$dom = new DOMDocument;
$dom->loadXml($xml);
$xp = new DOMXPath($dom);
foreach ($xp->query('/people/person/description/node()') as $child) {
echo $dom->saveXml($child);
}
會給
<p>blah blah blah</p>
<p>kjdsfksdjf</p>
k kjsdf kk sak kfsdjk sadk
要將XML導入MySql,還可以使用http://dev.mysql.com/doc/refman/5.5/en/load-xml.html
我想解析描述,以便它返回其中的html標記。
在XPath中,您將選擇description
元素的子節點。
采用:
"//person/description/*"
獲取所有子節點(僅html標記)或
"//person/description/node()"
獲取所有子節點(html標記和文本節點)。
例如,此php代碼:
<?php
$xml = simplexml_load_file("test.xml");
$result = $xml->xpath("//person/description/*");
print_r($result);
?>
返回SimpleXMLElements的數組,這些數組是description
。 檢索每個項目及其所有后代節點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.