在服务器上安装 SDO 后,我发现一些信息表明 SDO 不会得到进一步的开发/支持。

如果没有 SDO,这怎么可能呢?

$das = SDO_DAS_XML::create("$someSchemaFile");
$doc = $das->createDocument();
$root = $doc->getRootDataObject();
$root->Data1 = 'data1';
$root->Data2 = 'data2';
$string = $das->saveString($doc);

架构(伪)
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:cc="http://cc/XMLSchema">
    <xsd:element name="SomeName">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="Data1" type="xsd:string"/>
                <xsd:element name="Data2" type="xsd:string"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
</xsd:schema>

最佳答案

XSD 本身就是 XML,因此您有多种方法可以解决它,例如 DomDocument 。但最简单的方法可能是 SimpleXML ,它没有那么强大,但大多数情况下你不需要它。

这是一个小例子:

$xml = <<<XML <?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:cc="http://cc/XMLSchema">
    <xsd:element name="SomeName">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="Data1" type="xsd:string"/>
                <xsd:element name="Data2" type="xsd:string"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element> </xsd:schema>
XML;

$doc = simplexml_load_string($xml);

// get the first xsd:element node with a name-attribute of 'Data1'
$element = $doc->xpath("//xsd:element[@name='Data1']")[0];

// change the name-attribute:
$element->attributes()->name = 'SomeOtherName';

// or even add another attribute:
$element->addAttribute('newAttribute', 'newAttributeValue');

// and spit it out as XML again:
echo $doc->asXML();

我希望这会有所帮助,因为我不太确定这是否是您的想法。但据我了解您的问题,您只是在寻找一种替代/简单的方法来操作 XML 文件。

关于php - 如何在没有 SDO 的情况下加载架构、设置属性和输出字符串?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25569648/

10-11 20:47