以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XSL/XSLT/XSL-FO/CSS 』  (http://bbs.xml.org.cn/list.asp?boardid=8)
----  需要从一个xml文档出抽取出多个xml文档  (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=61181)


--  作者:ricecake
--  发布时间:4/11/2008 10:59:00 AM

--  需要从一个xml文档出抽取出多个xml文档
需要从一个xml文档出抽取出多个xml文档

原xml文档架构
<BDD>
   <Part>
     <Part>
       <Part>
         ........
       </part>
     </Part>
     <Part>
     </Part>
     ...............
   </Part>
</BDD>
说明:原xml文档中的根节点下只有一个<Part>节点,但该<Part>节点下会包含多个<part>字节点,每个<part>字节点还有可能包含多个<part>字节点,该xml的深度无限。
抽取原则:只要当前<part>字节点下有<part>子节点,就把当前<part>节点和他的所有直接子节点抽取出来声成一个新的xml文档。直到把原xml文档中符合该条件的都抽取出来生成新的xml文档。


--  作者:907941727
--  发布时间:6/24/2008 9:16:00 AM

--  
没看懂什么意思.
--  作者:belinda_pjm
--  发布时间:6/24/2008 1:35:00 PM

--  
你要用什么语言来写啊! 我知道C#中有个方法是判断当前节点是否存在子节点!
--  作者:belinda_pjm
--  发布时间:6/24/2008 1:38:00 PM

--  
XPathNavigator xpn;
                xpn.HasChildren; 这个是判断当前节点是否有子节点!

--  作者:Qr
--  发布时间:6/24/2008 3:32:00 PM

--  
如果文件不大,用DOM很方便,selectNodes("//Part")或getElementsByTagName("Part")就可以取得任意节点下的同名节点,然后遍历和判断其下是否有子节点或文本节点,符合条件则将该节点输出为XML文档。

如果不同名那就慢慢递归吧。


--  作者:belinda_pjm
--  发布时间:6/24/2008 3:47:00 PM

--  
用递归不用这么麻烦吧!能简单就简单点!
--  作者:Qr
--  发布时间:6/26/2008 8:34:00 AM

--  
以下是引用belinda_pjm在2008-6-24 15:47:00的发言:
用递归不用这么麻烦吧!能简单就简单点!


如果不同名,不用递归怎么写代码?你有什么方法,贴出来学习学习,让俺也见识见识。
--  作者:hexun831012
--  发布时间:6/27/2008 9:48:00 AM

--  
QR还战斗着,而我以好久不在,惭愧惭愧。
LZ的文档结构就是递归的,那不递归怎么解析哦。。。
<xsl:template match="part">
  <!--随你干什么-->
  <xsl:apply-templates select="part"/>
  <!--还是随你-->
</xsl:template>
--  作者:Qr
--  发布时间:7/1/2008 10:00:00 AM

--  
以下是引用hexun831012在2008-6-27 9:48:00的发言:
QR还战斗着,而我以好久不在,惭愧惭愧。
LZ的文档结构就是递归的,那不递归怎么解析哦。。。
<xsl:template match="part">
   <!--随你干什么-->
   <xsl:apply-templates select="part"/>
   <!--还是随你-->
</xsl:template>


工作不是很繁忙,随便找些事做咯,学习一下XSLT真的很不错,在实际应用中能帮我解决不少难缠的问题。
如果要输出为独立的XML文档,用XSL不是没办法,就是走点弯路。直接用DOM多方便。
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
78.125ms