//实现结点排序$doc = new DOMDocument; 
$doc->load('t_x.xml'); 
$trans = $doc->documentElement->getElementsByTagName('Transaction');
$length = $trans->length;for($i=0;$i< $length; $i++)
{
$containorder = $trans->item($i)->getElementsByTagName('Containorder');
$listid = $trans->item($i)->getElementsByTagName('listid');
$tmpid = $listid->item(0)->nodeValue;
for($j=$i+1;$j< $length; $j++)
{
$containorder2 = $trans->item($j)->getElementsByTagName('Containorder');
  $listid2 = $trans->item($j)->getElementsByTagName('listid');
  $tmpid2 = $listid2->item(0)->nodeValue;
  if($tmpid < $tmpid2)
  {
   $trans->item(0)->parentNode->insertBefore($trans->item($j),$trans->item($i));   
  }
}
}
$doc->save("t_x.xml");
//Containorder节点且orderid相同的数据显示在一起,不知道是不是你想要的结果.$doc = new DOMDocument; 
$doc->load('t_x.xml'); 
$trans = $doc->documentElement->getElementsByTagName('Transaction');
$length = $trans->length;
for($i=0;$i< $length; $i++)
{
$containorder = $trans->item($i)->getElementsByTagName('Containorder');
$listid = $trans->item($i)->getElementsByTagName('listid');
$tmpid = $listid->item(0)->nodeValue;
if($containorder->length == 0)
{
continue;
}
$orderid = $containorder->item(0)->getElementsByTagName("orderid")->item(0)->nodeValue;
for($j=$i+1;$j< $length; $j++)
{
$containorder2 = $trans->item($j)->getElementsByTagName('Containorder');
  $listid2 = $trans->item($j)->getElementsByTagName('listid');
  $tmpid2 = $listid2->item(0)->nodeValue;
  if($containorder2->length == 0)
{
continue;
}
$orderid2 = $containorder2->item(0)->getElementsByTagName("orderid")->item(0)->nodeValue;
  if($orderid == $orderid2)
  {
   $trans->item(0)->parentNode->insertBefore($trans->item($j),$trans->item($i));
  }
}
}
$doc->save("t_x.xml");

解决方案 »

  1.   

    谢谢您的回答 我在网上找了一些资料 好象很多用XSL来用做XML排序 请问下 哪种速度快点  谢谢
      

  2.   

    您的代码太好了谢谢 恩 我两种都试一下,  对了在 XSL中 超连接的代码出错<a href="record.php?itemid=<xsl:value-of select="mxh:itemid"/>&amp;transactionid=<xsl:value-of select="mxh:tansactioni"/>"><xsl:value-of select="mxh:SalesRecordNumber"/></a>
    请问真确的因该怎么写啊 谢谢 
      

  3.   

    非常感谢您提供的代码, 但我对下面数据进行排序时得不到结果 要刷新几次才能真确排序<?xml version="1.0" encoding="UTF-8"?>
    <GetSellerTransactionsResponse>  
    <TransactionArray>
    <Transaction>
    <Item>
    <ItemID>12345</ItemID>
    <Title>TEST ITEM</Title>
    </Item>
    <ShippingDetails>
    <ListID>103</ListID>
    </ShippingDetails>
    <ContainingOrder>
    <OrderID>123456</OrderID>
    </ContainingOrder>
    </Transaction>
    <Transaction>
    <Item>
    <ItemID>12345</ItemID>
    <Title>TEST ITEM</Title>
    </Item>
    <ShippingDetails>
    <ListID>106</ListID>
    </ShippingDetails>
    <ContainingOrder>
    <OrderID>123456</OrderID>
    </ContainingOrder>
    </Transaction>
    <Transaction>
    <Item>
    <ItemID>12345</ItemID>
    <Title>TEST ITEM</Title>
    </Item>
    <ShippingDetails>
    <ListID>104</ListID>
    </ShippingDetails>
    <ContainingOrder>
    <OrderID>123456</OrderID>
    </ContainingOrder>
    </Transaction>
    <Transaction>
    <Item>
    <ItemID>12345</ItemID>
    <Title>TEST ITEM</Title>
    </Item>
    <ShippingDetails>
    <ListID>107</ListID>
    </ShippingDetails>
    <ContainingOrder>
    <OrderID>123456</OrderID>
    </ContainingOrder>
    </Transaction>
    <Transaction>
    <Item>
    <ItemID>12345</ItemID>
    <Title>TEST ITEM</Title>
    </Item>
    <ShippingDetails>
    <ListID>105</ListID>
    </ShippingDetails>
    <ContainingOrder>
    <OrderID>123456</OrderID>
    </ContainingOrder>
    </Transaction>
    <Transaction>
    <Item>
    <ItemID>12345</ItemID>
    <Title>TEST ITEM</Title>
    </Item>
    <ShippingDetails>
    <ListID>102</ListID>
    </ShippingDetails>
    <ContainingOrder>
    <OrderID>123456</OrderID>
    </ContainingOrder>
    </Transaction>
    <Transaction>
    <Item>
    <ItemID>12345</ItemID>
    <Title>TEST ITEM</Title>
    </Item>
    <ShippingDetails>
    <ListID>101</ListID>
    </ShippingDetails>
    <ContainingOrder>
    <OrderID>123456</OrderID>
    </ContainingOrder>
    </Transaction>
    <Transaction>
    <Item>
    <ItemID>12345</ItemID>
    <Title>TEST ITEM</Title>
    </Item>
    <ShippingDetails>
    <ListID>100</ListID>
    </ShippingDetails>
    <ContainingOrder>
    <OrderID>123456</OrderID>
    </ContainingOrder>
    </Transaction>
    </TransactionArray>
    </GetSellerTransactionsResponse>
      

  4.   

    llllllllllllllllllllllllllllllllllllllllll