我有两个xml文件..我首先得到一个并循环遍历它然后我需要从第一个xml文件中取一个id并在第二个中找到它并回显出与该id相关的结果。如果我用SQL做到这一点,我会这样做:
$query = (SELECT * FROM HotelSummary WHERE roomTypeCode = '$id') or die();
while($row=mysql_fetch_array($query)){
$name = $row['Name'];
}
echo $name;
我怎么能这样做是在xml和php ??
答案 0 :(得分:2)
我建议你阅读DOMDocument documentation。 它很重,但也很强大(并不总是清楚会发生什么,但互联网会给你一个解决方案)
您只需浏览第一个文档,找到您的ID,然后通过XPath找到您的DOMElement。
<?php
$dom = new DOMDocument();
$dom->load('1.xml');
foreach ($dom->getElementsByTagName('article') as $node) {
// your conditions to find out the id
$id = $node->getAttribute('id');
}
$dom = new DOMDocument();
$dom->load('2.xml');
$xpath = new DOMXPath($dom);
$element = $xpath->query("//*[@id='".$id."']")->item(0);
// would echo "top_2" based on my example files
echo $element->getAttribute('name');
基于以下测试文件:
1.XML
<?xml version="1.0" encoding="UTF-8"?>
<articles>
<article id="foo_1">
<title>abc</title>
</article>
<article id="foo_2">
<title>def</title>
</article>
</articles>
2.XML
<?xml version="1.0" encoding="UTF-8"?>
<tests>
<test id="foo_1" name="top_1">
</test>
<test id="foo_2" name="top_2">
</test>
</tests>
答案 1 :(得分:1)
使用SimpleXML创建文件的对象表示。然后,您可以遍历Simple XML对象的元素。
答案 2 :(得分:1)
取决于XML文件的格式:
假设它是:
<xml>
<roomTypeCode>
<stuff>stuff</stuff>
<name>Skunkman</name>
</roomTypeCode>
<roomTypeCode>
<stuff>other stuff</stuff>
<name>Someone Else</name>
</roomTypeCode>
</xml>
这将是这样的:
$xml = simplexml_load_file('xmlfile.xml');
for($i = 0; $i < count($xml->roomTypeCode); $i++)
{
if($xml->roomTypeCode[$i]->stuff == "stuff")
{
$name = $xml->roomTypeCode[$i]->name;
}
}
连接到XML文件,查找有多少个roomTypeCode条目,在其中搜索“stuff”的值以及何时正确匹配它,您可以访问与该XML条目有关的任何内容。