访问XML属性数据

时间:2013-02-22 19:27:37

标签: php xml xml-parsing

我有两行XML数据,它们是属性,但也包含内部数据,它们是重复字段。它们存储在SimpleXML变量中。

<inputField Type="Name">John Doe</inputField>
<inputField Type="DateOfHire">Tomorrow</inputField>

(显然这不是真实的数据,但语法实际上在我的数据中,我只是在其中使用字符串数据)

我见过的所有内容都表示要访问这样的数据,我已经尝试过它并且完美无缺。但我的数据是动态的,因此数据并不总是在同一个地方,所以它不符合我的需要。

$xmlFile->inputField[0];
$xmlFile->inputField[1];

这可以正常工作,直到缺少其中一行,我可以有0到5行。所以我想知道的是有什么方法可以通过属性名称访问数据吗?所以可能是这样的。

$xmlFile->inputField['Name'];

$xmlFile->inputField->Name;

我严格使用这些作为示例来说明我正在尝试做的事情,我知道上面的代码行都没有语法正确。

请注意,此信息是在外部生成的,因此我无法更改格式。

如果有人需要澄清,请随时告诉我,并乐意详细说明。

3 个答案:

答案 0 :(得分:0)

也许是这样的?

echo $xmlFile->inputField->attributest()->Name;

你在用什么? DOMDocument还是simplexml?

答案 1 :(得分:0)

您没有说,但我认为您正在使用SimpleXMLElement

如果您想访问每个项目,只需迭代:

foreach ($xmlFile->inputField as $inputField) { ... }

如果要访问属性,请使用数组表示法:

$inputField['Type']

如果您只想访问一个特定元素,请使用xpath:

$xmlFile->xpath('inputField[@Type="Name"]');

也许您应该阅读basic examples of usage in the SimpleXMLElement documentation

答案 2 :(得分:0)

例如,您可以抓取数据:

$xmlFile = simplexml_load_file($file);

foreach($xmlFile->inputField as $res) {

    echo $res["Name"];

}