<Publish xmlns="http://soa.test.com/SOA">
  <FromService>
http://soa.test.com/SOA
  </FromService>
  <ToService>http://soa.test.com/SOA</ToService>
  <RouteTable>
    <Article xmlns="http://soa.test.com/SOA">
      <ArticleCategory>NESO_OrderProcess</ArticleCategory>
      <ArticleType1>CreateOrder</ArticleType1>
      <ArticleType2>%</ArticleType2>
    </Article>
  </RouteTable>
  <Node>
  <Body>
<Order1></Order1>
<ceder></ceder>
.......
        </Body>
</Node>
</Publish>
根据命名空间解析出Body下的所有结点:
<Order1></Order1>
<ceder></ceder>
.......
我写的代码不知道为啥解析不到:
DECLARE   @Body NVARCHAR(MAX)WITH XMLNAMESPACES ('http://soa.test.com/SOA' AS eps)
SELECT @Body = CAST(@Msg.query(N'(/eps:Publish/*:Node/Body/*)') AS NVARCHAR(MAX))

解决方案 »

  1.   

    DECLARE @MSG XML
    SELECT @MSG='<Publish>
      <FromService>
            http://soa.test.com/SOA
      </FromService>
      <ToService>http://soa.test.com/SOA</ToService>
      <RouteTable>
        <Article xmlns="http://soa.test.com/SOA">
          <ArticleCategory>NESO_OrderProcess</ArticleCategory>
          <ArticleType1>CreateOrder</ArticleType1>
          <ArticleType2>%</ArticleType2>
        </Article>
      </RouteTable>
      <Node>
         <Body>
        <Order1></Order1>
        <ceder></ceder>
        .......
            </Body>
    </Node>
    </Publish>'SELECT @MSG.query('//Node/*')
    /*
    <Body>
      <Order1 />
      <ceder />
        .......
            </Body>
    */
      

  2.   

    直接用全文搜做语法“//Node”来定位就可以了吧。
      

  3.   

    直接用//Node定位有问题。要用全路径定位,并且要加上namespace的
      

  4.   

    谢谢.一楼链接,我看了,没有跟namespace有关的东东
      

  5.   

    http://topic.csdn.net/u/20090401/15/51d2a909-63fb-40a1-81bd-84a8b1536c8c.html