XML 文件到 PHP 数组(带属性)

发布于 2024-10-08 08:13:47 字数 630 浏览 2 评论 0原文

我以前没有真正使用过 xml 文件,但现在我试图将 xml 文件放入 php 数组或对象中。 xml 文件如下所示:(用于翻译 Web 应用程序)

<?xml version="1.0" ?>
<content language="de"> 
 <string name="login">Login</string>
 <string name="username">Benutzername</string>
 <string name="password">Passwort</string>
</content>

我尝试了以下操作:

$xml = new SimpleXMLElement("de.xml", 0, 1);
print_r($xml);

不幸的是,“name”属性的值由于某种原因不在 php 对象中。我正在寻找一种方法,允许我通过 name 属性检索 xml 值。

例如:

$xml['username'] //returns "Benutzername"

这怎么办? 感谢您的帮助:)干杯!

i haven't really worked with xml files before, but now i'm trying to get an xml file into a php array or object.
the xml file looks like this: (it's for translating a web app)

<?xml version="1.0" ?>
<content language="de"> 
 <string name="login">Login</string>
 <string name="username">Benutzername</string>
 <string name="password">Passwort</string>
</content>

i tried the following:

$xml = new SimpleXMLElement("de.xml", 0, 1);
print_r($xml);

unfortunately, the values of the 'name' attribute are for some reason not in the php object. i'm looking for a way that allows me to retrieve the xml values by the name attribute.

for instance:

$xml['username'] //returns "Benutzername"

how can this be done?
appreciate your help :) cheers!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

始于初秋 2024-10-15 08:13:47

这个应该向您解释该功能:

<?php
$xml = simplexml_load_file('de.xml');

foreach($xml->string as $string) { 
  echo 'attributes: '. $string->attributes() .'<br />';
}
?>

SimpleXMLElement 类中的 attributes() 方法将为您提供帮助 - http://de.php.net/manual/en/simplexmlelement.attributes.php

This one should explain the function to you:

<?php
$xml = simplexml_load_file('de.xml');

foreach($xml->string as $string) { 
  echo 'attributes: '. $string->attributes() .'<br />';
}
?>

The attributes() method from SimpleXMLElement class will help you - http://de.php.net/manual/en/simplexmlelement.attributes.php

站稳脚跟 2024-10-15 08:13:47
$xmlStr = <<<XML
<?xml version="1.0" ?>
<content language="de"> 
 <string name="login">Login</string>
 <string name="username">Benutzername</string>
 <string name="password">Passwort</string>
</content>
XML;

$doc = new DomDocument();
$doc->loadXML($xmlStr);

$strings = $doc->getElementsByTagName('string');
foreach ($strings as $node) {
    echo $node->getAttribute('name') . ' = ' . $node->nodeValue . PHP_EOL;
}
$xmlStr = <<<XML
<?xml version="1.0" ?>
<content language="de"> 
 <string name="login">Login</string>
 <string name="username">Benutzername</string>
 <string name="password">Passwort</string>
</content>
XML;

$doc = new DomDocument();
$doc->loadXML($xmlStr);

$strings = $doc->getElementsByTagName('string');
foreach ($strings as $node) {
    echo $node->getAttribute('name') . ' = ' . $node->nodeValue . PHP_EOL;
}
吝吻 2024-10-15 08:13:47

您可以使用 xpath 表达式来获取具有您要查找的名称的元素:

(string)current($xml->xpath('/content/string[@name="username"]'))

You can use an xpath expression to get the element with the name you are looking for:

(string)current($xml->xpath('/content/string[@name="username"]'))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文