在服务器上安装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>
答案 0 :(得分:2)
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文件的替代/简单方法。