当前位置: 首页 > 知识库问答 >
问题:

使用PHP的simpleXML将值应用于带有属性的新XML元素

元彦君
2023-03-14

下面是一个函数(在处理注释的类中),用于创建注释元素

function add($id,$message){
    $newcomment = $this->source->addChild('comment');
    $newcomment->addAttribute('user',$id);
    $newcomment->addAttribute('timestamp',time());

    $newcomment = $message; // <--------- fail

    $this->source->asXML($this->save);
    return(true);
}

所有这些都有效,但我显然不知道我在用我指着的线做什么。但是我基本上想把消息放在评论元素中,就像这样:

<comments>
  <comment id="12345678" timestamp="1355812061">
    Hey friend, what's up?
  </comment>
  <comment id="87654321" timestamp="1355813155">
    Nothing much, just have this problem with simpleXML
  </comment>
</comments>

但我所做的一切都是有效的,只是信息没有设置好。

所以我的问题是,这可能吗?如果可能,我必须怎么做?

共有3个答案

双元魁
2023-03-14

创建注释字段时,只需将第二个参数添加到addChild()

$newcomment = $this->source->addChild('comment', $message);
束俊英
2023-03-14

所以我的问题是,这可能吗?如果可能,我必须怎么做?

是的,这是可能的。可以使用数组样式sytax直接写入元素:

$newcomment[0] = $message;

SimpleXML不允许将文本内容写入普通变量,但允许使用数组样式访问($node[$n]='string')或属性样式访问($node])写入元素-

要写入变量中包含的元素,请使用上面所示的数组语法的index0

舒博雅
2023-03-14

使用第二个参数将新创建的子元素的值设置为addChild(),如下所示:

$newcomment = $this->source->addChild('comment', $message);

然后你可以去掉你指的线。

 类似资料:
  • 问题内容: 在XML文档中,我具有共享相同名称的元素,但是属性的值定义了它是什么类型的数据,并且我想从文档中选择所有具有特定值的元素。我是否需要使用XPath(如果可以,您是否可以建议正确的语法)还是有更优雅的解决方案? 这是一些示例XML: 我想选择类型为的所有子代标签的内容。 PS-我正在尝试使用PHP与Netflix API进行接口-这对我的问题无关紧要,但是如果您想提出一种更好的方法,我非

  • 问题内容: 我试图生成以下格式的xml: 我的查询如下: 我的查询没有完全产生记录标签,目前是 应该是 我尝试了所有可能性,但没有获得标签。谁能帮我解决这个问题。 问题答案: 我无法从xml显式获得预期的输出,相反,我使用了xml路径并获得了输出。这是我更新的查询 欢迎您发布明确使用xml的修复程序。

  • 问题内容: 当我在下面尝试添加为属性时,我正在创建Atom供稿- 我将此作为输出- 部分被切断。我需要转义- 字符吗?还是他们以其他方式添加此命名空间? 问题答案: 如果要从名称空间/前缀向$ node 添加属性,则无需事先声明名称空间。只需使用addAttribute()的第三个参数为您在第一个参数中使用的前缀提供名称空间uri。 版画 如果不需要属性本身,则可以使用删除它,而保留名称空间声明。

  • 问题内容: 我在这里有以下xml文档:编辑:(请参见下面的示例) 我正在使用php / SimpleXML将其转换为对象以读取它: 当我使用print_r时,我看到字段的属性,但没有显示可接受值的属性。这是原始xml的示例(我需要value属性): 这是我在print_r时看到的: 为什么没有显示属性的任何线索?提前致谢。 编辑:请求一些xml: 问题答案: 这里的简单答案是不与SimpleXML

  • 问题内容: 我在SQL Server 2008中有一个表,其中有一些列。这些列之一是Xml格式,我想更新一些属性。 例如,我的Xml列的名称为,它在前5行中的值如下: 我想将所有属性设置为30到40,如下所示: 问题答案: 从问题的早期版本看来,您的XML实际上位于表的不同行上。在这种情况下,您可以使用此功能。 使用表变量的工作样本。

  • 有人能帮我把它弄好吗。谢谢你。