首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XMLDoc GetElementsByTagName仅第一项

XMLDoc GetElementsByTagName仅第一项
EN

Stack Overflow用户
提问于 2015-05-25 21:17:23
回答 2查看 416关注 0票数 0

我正在使用php创建XML到SQL文件,但只希望我的脚本处理XML文档中的第一个条目。

代码语言:javascript
复制
$xmlObject = $xmlDoc->getElementsByTagName('PlaylistEntry');

输入我想要的特定路径

代码语言:javascript
复制
/Playlist/PlaylistEntry[1]/Title[1]/text()

不会产生结果。

有什么建议吗?

编辑:

代码语言:javascript
复制
$xmlDoc = new DOMDocument();
$xmlDoc->load("file.xml");

$mysql_hostname = "";
$mysql_user     = "";
$mysql_password = "";
$mysql_database = "";

$bd = mysql_connect($mysql_hostname, $mysql_user, $mysql_password) or die("Error");
mysql_select_db($mysql_database, $bd) or die("Error");

$xmlObject = $xmlDoc->getElementsByTagName('PlaylistEntry');
$itemCount = $xmlObject->length;

for ($i=0; $i < $itemCount; $i++){
$Title = $xmlObject->item($i)->getElementsByTagName('Title')->item(0)->childNodes->item(0)->nodeValue;
$sql   = "INSERT INTO `nowplaying` (Title) VALUES ('$Title')";
mysql_query($sql);
print "Finished Item $Title<br/>";
}

xml:

代码语言:javascript
复制
<Playlist>
<Refresh>41</Refresh>
<PlaylistEntry>
<Title>Tongue Tied</Title>
<Artist>Grouplove</Artist>
<Album>Never Trust A Happy Song</Album>
<ECommerceURL/>
<FileName>02_Tongue_Tied.mp3</FileName>
<trackType/>
<desc/>
<clickThruURL/>
<visualURL>
id=14245829|img=http://upload.wikimedia.org/wikipedia/en/f/f9/GrouploveTongueTied.jpg
</visualURL>
<Seconds>218</Seconds>
</PlaylistEntry>
<PlaylistEntry>
<Title>Holy Roller Novocaine</Title>
<Artist>Kings of Leon</Artist>
<Album>Kings of Leon EP</Album>
<ECommerceURL/>
<FileName>03_Holy_Roller_Novocaine.mp3</FileName>
<trackType/>
<desc/>
<clickThruURL/>
<visualURL>
id=18144083|img=http://upload.wikimedia.org/wikipedia/en/8/86/Holyrollernovacaine.jpg
</visualURL>
<Seconds>257</Seconds>
</PlaylistEntry>
<PlaylistEntry>
...
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-25 22:31:18

替换

代码语言:javascript
复制
$xmlObject = $xmlDoc->getElementsByTagName('PlaylistEntry');
$itemCount = $xmlObject->length;

for ($i=0; $i < $itemCount; $i++){
$Title = $xmlObject->item($i)->getElementsByTagName('Title')->item(0)->childNodes->item(0)->nodeValue;

通过以下代码使用xpath

代码语言:javascript
复制
$xpath = new DOMXpath($xmlDoc);
$elements = $xpath->query("/Playlist/PlaylistEntry/Title/text()");

if (!is_null($elements)) 
  foreach ($elements as $element) 
    $Title = $element->wholeText;
票数 0
EN

Stack Overflow用户

发布于 2015-05-26 02:05:27

谢谢splash58!

我让它起作用了!

以下是我最后得到的结果:

代码语言:javascript
复制
$xpath = new DOMXpath($xmlDoc);
$elements = $xpath->query("/Playlist/PlaylistEntry[1]");

if (!is_null($elements)) 
foreach ($elements as $element) 
$Title = $xpath->query("/Playlist/PlaylistEntry[1]/Title[1]/text()", $element)->item(0)->nodeValue;
$Artist = $xpath->query("/Playlist/PlaylistEntry[1]/Artist[1]/text()", $element)->item(0)->nodeValue;
$sql   = "INSERT INTO `nowplaying` (Title, Artist) VALUES ('$Title', '$Artist')";

再次感谢你的助推:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30446114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档