2012-10-23 11 views
0

xml 기반 송장을 생성하려면 SimpleXML을 사용하고 있습니다.SimpleXML 앞에 요소를 추가하십시오.

<invoice> 
    <total> 
     <price>100</price> 
    </total> 
    <items> 
     <item>...</item> 
    </items> 
</invoice> 

을하지만 먼저 루프 경우 내 아이템은 <total>을 함께 합계를 추가 한 다음 삽입 :

구조는 다음과 같이 (크게 단순화)이어야한다

<invoice> 
    <items>...</items> 
    <total>...</total> 
</invoice> 

그러나 CUSTOM XSD를에 잘못되었습니다. 이것은 아마도 응용 프로그램에서 오류를 일으키지는 않겠지 만 유효해야합니다.

그래서 <total> 태그 전에 <items> 태그를 삽입 할 수 있습니다?

참고 :<items> 태그는 <invoice>의 첫 번째 요소가 아닙니다. 필요로하는 기능

JQUERY 상당 .insertBefore()

건배있다!

+0

두 번째 예가 유효합니다. 문제의 근원 인 타원으로 대체 한 노드가 의심 스럽습니다. –

+0

나는''이'' 태그 앞에 있어야만하는 사용자 정의 XSD 파일을 가지고있다. – Kristian

답변

1

당신은 같은 것을 할 수 있습니다

$domelement = dom_import_simplexml($items); 

    $new = $dom->insertBefore(
     $dom->ownerDocument->createElement("total"), 
     $dom->firstChild 
    ); 

    $newsxml = simplexml_import_dom($new); 

는 전체 노드에 항목을 추가 할 수 있습니다.

+0

예 http://stackoverflow.com/questions/3361036/php-simplexml-insert-node-at-certain-position . 어쨌든 고마워! :) – Kristian

관련 문제