【问题标题】:Combining values from 2 XML objects in PHP在 PHP 中组合来自 2 个 XML 对象的值
【发布时间】:2010-07-30 18:17:26
【问题描述】:

...嗯,实际上我有一个看起来像这样的对象:

object(AleParserXMLElement)#39 (4) {
  ["name:private"]=>
  string(6) "rowset"
  ["data:private"]=>
  object(SimpleXMLElement)#42 (2) {
    ["@attributes"]=>
    array(3) {
      ["name"]=>
      string(6) "skills"
      ["key"]=>
      string(6) "typeID"
      ["columns"]=>
      string(36) "typeID,skillpoints,level,unpublished"
    }
    ["row"]=>
    array(185) {
      [0]=>
      object(SimpleXMLElement)#70 (1) {
        ["@attributes"]=>
        array(3) {
          ["typeID"]=>
          string(4) "3377"
          ["skillpoints"]=>
          string(6) "256000"
          ["level"]=>
          string(1) "5"
        }
      }
      [1]=>
      object(SimpleXMLElement)#23 (1) {
        ["@attributes"]=>
        array(3) {
          ["typeID"]=>
          string(5) "20342"
          ["skillpoints"]=>
          string(1) "0"
          ["level"]=>
          string(1) "0"
        }
      }
      [2]=>
      object(SimpleXMLElement)#9 (1) {
        ["@attributes"]=>
        array(3) {
          ["typeID"]=>
          string(5) "12096"
          ["skillpoints"]=>
          string(1) "0"
          ["level"]=>
          string(1) "0"
        }
      }
      //etc.
    }
  }
  ["children:private"]=>
  NULL
  ["rows:private"]=>
  NULL
}

我有一个 XML 文件,你可以在这里看到:

link

我想展示我的第一个对象中的这些技能,但将它们的 typeID 值替换为该 xml 文件中的 typeName
正如您所假设的,我完全不知道该怎么做:)请帮忙!

【问题讨论】:

  • 你有什么理由不能只创建一个 assoc 数组或任何你想要的值?
  • 嗯,是的,这是有原因的,而且很蹩脚:) 我不知道如何从 XML 文件和我拥有的那个对象中获取所有值 :)

标签: php xml parsing object


【解决方案1】:

您可以使用 DOMDocuent 和 DOMXpath 来获取名称。像 //row[@typeID="ID HERE"]/@typeName 这样的 XPath 表达式可以:

$d = new DOMDocument;
$d->load(...);
$xp = new DOMXpath($d);
$name = $xp->query('//row[@typeID="ID HERE"]/@typeName');
echo $name->item(0)->value;

至于您如何进行替换,请参阅您正在使用的 XML 解析器的文档(我看到一个 AleParser 在那里包装了一个 SimpleXMLElement,但不知道那是什么)。

【讨论】:

  • 感谢您的帮助!我真的不知道这个 XML 的东西,由于某种原因,这让我非常困惑 :) 无论我尝试什么,我都会得到“警告:DOMXPath::query() [domxpath.query]: Invalid expression in.. 。“ 错误!我的查询看起来像这样 $name = $xp->query('string(//row[@typeID='.$skill->typeID.']/@typeName'); 并且 $skill->typeID 来自 foreach 循环它遍历我的对象... AleParser 是 Eve-Online 游戏的 API 库 - code-box.sk/software/ale.html
猜你喜欢
  • 2019-09-28
  • 2018-03-04
  • 1970-01-01
  • 2021-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-14
相关资源
最近更新 更多