Java 从xml文档中提取标记

Java 从xml文档中提取标记,java,xml,dom,Java,Xml,Dom,我正试图使用JAVA从XML文档中提取一些标记,我看到了一些与DOM相关的答案,但我不需要标记的值,下面是我必须提取的XML标记 <MFEP> <MsgHeader> <TmStp>2013-12-25T10:52:50</TmStp> <TrsInf> <SdrCode>145</SdrCode> <RcvCo

我正试图使用
JAVA
XML
文档中提取一些标记,我看到了一些与
DOM
相关的答案,但我不需要标记的值,下面是我必须提取的
XML
标记

    <MFEP>
    <MsgHeader>
        <TmStp>2013-12-25T10:52:50</TmStp>
        <TrsInf>
            <SdrCode>145</SdrCode>
            <RcvCode>7777</RcvCode>
            <ReqTyp>asd</ReqTyp>
        </TrsInf>
    </MsgHeader>

    <MsgHeader>
        <TmStp>2013-12-25T10:52:50</TmStp>
        <TrsInf>
            <SdrCode>2123</SdrCode>
            <RcvCode>323</RcvCode>
            <ReqTyp>asd</ReqTyp>
        </TrsInf>
    </MsgHeader>

    <MsgBody>
        <AcctInfo>
            <BillingNo>asd</BillingNo>
            <BillNo>1267</BillNo>
        </AcctInfo>
        <ServiceType>FixedLine</ServiceType>
    </MsgBody>
    <MsgFooter>
        <Security>
            <Signature>asd</Signature>
        </Security>
    </MsgFooter>

    <MsgHeader>
        <TmStp>2013-12-25T10:52:50</TmStp>
        <TrsInf>
            <SdrCode>2</SdrCode>
            <RcvCode>3</RcvCode>
            <ReqTyp>BILPULRQ</ReqTyp>
        </TrsInf>
    </MsgHeader>
</MFEP>

2013-12-25T10:52:50
145
7777
自闭症
2013-12-25T10:52:50
2123
323
自闭症
自闭症
1267
固定线路
自闭症
2013-12-25T10:52:50
2.
3.
比尔普尔克
输出必须是

    <MsgHeader>
        <TmStp>2013-12-25T10:52:50</TmStp>
        <TrsInf>
            <SdrCode>145</SdrCode>
            <RcvCode>7777</RcvCode>
            <ReqTyp>asd</ReqTyp>
        </TrsInf>
    </MsgHeader>

    <MsgHeader>
        <TmStp>2013-12-25T10:52:50</TmStp>
        <TrsInf>
            <SdrCode>2123</SdrCode>
            <RcvCode>323</RcvCode>
            <ReqTyp>asd</ReqTyp>
        </TrsInf>
    </MsgHeader>

    <MsgHeader>
        <TmStp>2013-12-25T10:52:50</TmStp>
        <TrsInf>
            <SdrCode>2</SdrCode>
            <RcvCode>3</RcvCode>
            <ReqTyp>BILPULRQ</ReqTyp>
        </TrsInf>
    </MsgHeader>

2013-12-25T10:52:50
145
7777
自闭症
2013-12-25T10:52:50
2123
323
自闭症
2013-12-25T10:52:50
2.
3.
比尔普尔克

我知道您不愿意乱搞XSLT,但这很简单:

transform.xslt

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:output method="xml" indent="yes"/>

  <xsl:template match="/">
    <MFEP>
      <xsl:apply-templates select="/MFEP/MsgHeader"/>
    </MFEP>
  </xsl:template>

  <xsl:template match="/MFEP/MsgHeader">
    <xsl:copy-of select="." />
  </xsl:template>

</xsl:stylesheet>

我知道您不愿意把XSLT搞得一团糟,但这很简单:

transform.xslt

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:output method="xml" indent="yes"/>

  <xsl:template match="/">
    <MFEP>
      <xsl:apply-templates select="/MFEP/MsgHeader"/>
    </MFEP>
  </xsl:template>

  <xsl:template match="/MFEP/MsgHeader">
    <xsl:copy-of select="." />
  </xsl:template>

</xsl:stylesheet>

xsltI以前很少使用XSLT,但不幸的是,没有时间学习更多内容,如果有其他更好的想法,那么如果您向我们展示选择元素节点的Java代码,那么我们可以添加一些代码来序列化它们,一般来说,可以将节点序列化为XML。或者使用默认的转换器。另请参阅,了解如何将DOM节点写成XML。您忘了向我们展示您的代码。你应该解释你有什么具体的问题。这对xsltI来说很容易,但不幸的是,以前很少使用XSLT,没有时间了解更多,如果有其他更好的想法,那么如果你向我们展示选择元素节点的Java代码,那么我们可以添加一些代码来序列化它们,一般来说,请查看如何将节点序列化为XML。或者使用默认的转换器。另请参阅,了解如何将DOM节点写成XML。您忘了向我们展示您的代码。你应该解释你有什么具体的问题。完美的,它可以工作,但是如果我需要它,动态的意味着它不一定是/MFEP/MsgHeader,它可能是其他标记,所以如果我可以从java代码传递标记?通常直接在xslt文件上更改它更容易/更快,因为你不需要重新编译并将其打包到jar/war文件中。如果必须涵盖许多XML结构,可以为每个结构编写xslt,并将xslt文件路径作为Java参数传递。如果还不够,您可以将参数传递给xslt文件(transformer.setParameter()),甚至可以通过编程生成xslt文件,因为它本身就是一个XML文件。但是我认为你应该首先考虑更简单的选择。明天我会尝试,+ 1感谢完美它工作,但如果我需要它动态意味着它不总是必须/MFEP / MSGHead它可能是其他标签,所以如果我可以通过java代码传递标签?通常更容易/更快直接在XSLT文件上改变它,因为您不需要重新编译并将其打包到jar/war文件中。如果必须涵盖许多XML结构,可以为每个结构编写xslt,并将xslt文件路径作为Java参数传递。如果还不够,您可以将参数传递给xslt文件(transformer.setParameter()),甚至可以通过编程生成xslt文件,因为它本身就是一个XML文件。但我认为你应该首先考虑更简单的选择。明天我会尝试,+ 1谢谢。