以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 WORD to XML, HTML to XML 』  (http://bbs.xml.org.cn/list.asp?boardid=13)
----  急,求xml文本转为指定格式文本方法  (http://bbs.xml.org.cn/dispbbs.asp?boardid=13&rootid=&id=36814)


--  作者:leontz
--  发布时间:8/15/2006 5:05:00 PM

--  急,求xml文本转为指定格式文本方法
小弟现遇到这样一问题,有xml文本如下
   <MSG>
         <REC>
             <RPTNO>12345</RPTNO>
                 <ERR>
                    <ERRFIELD>1111</ERRFIELD>
                 </ERR>
                 <ERR>
                    <ERRFIELD>2222</ERRFIELD>
                 </ERR>
                  .........
          </REC>
          <REC>
             <RPTNO>23456</RPTNO>
                 <ERR>
                    <ERRFIELD>3333</ERRFIELD>
                 </ERR>
                 <ERR>
                    <ERRFIELD>4444</ERRFIELD>
                 </ERR>
                  .........
          </REC>
           .........
     </MSG>

需要将其中的每个ERRFIELD都拆出来作为一行记录,每行需要域段如下
   RPTNO,ERRFIELD
但是因为RPTNO和ERRFIELD个数都不定,所以希望有大侠能提供一个比较简单的拆分办法,感激涕零~~最好有代码看一下


--  作者:SATOKO2006
--  发布时间:8/16/2006 2:40:00 PM

--  
嗷嗷!解决啦!!
--  作者:SATOKO2006
--  发布时间:8/16/2006 2:49:00 PM

--  
先建立一个目标XML样本的XSD文件(比如'MSG2.xsd',放在你的XML样本的目录下),然后在你的XMLSPY中执行以下XQuery即可得到你想要的XML文件:
xquery version "1.0";

declare namespace null = "";

declare variable $MSG := null:MSG;

<MSG>
{
 attribute xsi:noNamespaceSchemaLocation
 {
  'MSG2.xsd'
 }
 ,
 for $REC in $MSG/null:REC
  let $Vvar3_REC := $REC
 return
 (
  for $ERRFIELD in $REC/null:ERR/null:ERRFIELD
  return
   <REC>
   {
    for $RPTNO in $Vvar3_REC/null:RPTNO
    return
     <RPTNO>
     {
      fn:string( xs:string( $RPTNO ) )
     }
     </RPTNO>
    ,
    <ERRFIELD>
    {
     fn:string( xs:string( $ERRFIELD ) )
    }
    </ERRFIELD>
   }
   </REC>
 )
}
</MSG>


--  作者:SATOKO2006
--  发布时间:8/16/2006 3:00:00 PM

--  
目标XML样本如下:
<MSG xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="MSG2.xsd">
<REC><RPTNO>12345</RPTNO><ERRFIELD>1111</ERRFIELD></REC>
</MSG>
--  作者:rjzjh
--  发布时间:8/26/2006 8:04:00 PM

--  
XSD文件文件是做什么来的?
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
78.125ms