0

我正在加载一个xml文件

$xml = simplexml_load_file('status.cfg');

XML 文件遵循以下方案

    <statuses>
    <status>
        <title>Blackboard</title>
        <shorttitle>blackboard</shorttitle>
        <level>1</level>
        <greenstatus>checked</greenstatus>
        <yellowstatus></yellowstatus>
        <redstatus></redstatus>
    </status>

    <status>
        <title>Faculty/Staff Email</title>
        <shorttitle>fsemail</shorttitle>        
        <level>2</level>
        <greenstatus></greenstatus>
        <yellowstatus>checked</yellowstatus>
        <redstatus></redstatus>
    </status>
</statuses>

它读起来很好。但是当我创建一个新的xml文件时

$doc = new SimpleXMLElement('<xml/>');

并用

$doc->asXml('status.cfg');

它像这样吐出xml文件

<?xml version="1.0"?>
<xml>
        <statuses>
        <status>
            <title>Blackboard</title>
            <shorttitle>blackboard</shorttitle>
            <level>1</level>
            <greenstatus>checked</greenstatus>
            <yellowstatus></yellowstatus>
            <redstatus></redstatus>
        </status>

        <status>
            <title>Faculty/Staff Email</title>
            <shorttitle>fsemail</shorttitle>        
            <level>2</level>
            <greenstatus></greenstatus>
            <yellowstatus>checked</yellowstatus>
            <redstatus></redstatus>
        </status>
    </statuses>
</xml>

这导致我的原始页面无法使用诸如

$xml->status[0]->shorttitle;

但是,当删除外部 xml 标记时,它能够读取它。有任何想法吗?

4

1 回答 1

3

在一种情况下<statuses>是根节点,在另一种情况下<xml>是根节点,<statuses>作为第一个嵌套节点。我不明白您为什么希望添加另一个嵌套级别并能够以相同的方式读取数据。在你的情况下,什么时候<xml>是根节点,你需要像这样读取数据

$xml->statuses->status[0]->shorttitle
于 2013-09-19T19:56:35.457 回答