1

我有两行 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;

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

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

如果有人需要澄清,请随时让我知道,并很乐意详细说明。

4

3 回答 3

0

也许像这样?

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

你在用什么?DOMDocument 还是 simplexml?

于 2013-02-22T19:47:47.253 回答
0

你没有说,但我假设你正在使用SimpleXMLElement?

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

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

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

$inputField['Type']

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

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

也许您应该通读SimpleXMLElement 文档中的基本用法示例

于 2013-02-22T19:48:29.387 回答
0

例如,您可以抓取数据:

$xmlFile = simplexml_load_file($file);

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

    echo $res["Name"];

}
于 2013-02-22T19:51:07.317 回答