2014-08-29 2 views
3

서버에 SDO를 설치하는 데 어려움을 겪은 후 SDO가 더 개발/지원되지 않을 것이라는 정보를 발견했습니다.스키마를로드하고 속성을 설정하고 SDO없이 문자열을 출력하는 방법은 무엇입니까?

어떻게 SDO없이이 작업을 수행 할 수 있습니까? 당신은 예를 DomDocument에 대한처럼, 그것에 대해 이동하는 방법에는 여러 가지가 있으므로

$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> 
+1

목표는 스키마 파일 (xsd)을 많이로드하고 XML에서 일부 속성을 설정 한 다음 XML 문자열을 출력하는 것입니다. xsd의 내용을 게시 할 수 있습니까? –

+0

예, 그것이 제 목표입니다. 불행히도 스키마 파일을 게시 할 수 없습니다. –

+0

게시 할 수없는 정신 및 구조로 축약되고 유사한 스키마 파일을 만들 수 있습니까? –

답변

2

XSD는 XML 자체입니다. 하지만 가장 쉬운 방법은 아마도 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 파일을 조작하기위한 대체/쉬운 방법을 찾고 있습니다.

관련 문제