Ich versuche, die Daten von folgenden XML-Attributen rekursiv über XSLT zu lesen.Hilfe beim Abrufen von Daten aus xml rekursiv
Das sind meine XML-Beispieldaten !!
<FIXML .....">
<Batch ....>
<MktDef MktID="XEUR" MktSegID="14" EfctvBizDt="2017-05-11" NxtEfctvBizDt="2017-05-15" MktSeg="CONF" MarketSegmentDesc="FUT 8-13 Y. SWISS GOV.BONDS 6%" Sym="CH0002741988" ParentMktSegmID="FBND" Ccy="CHF" MktSegStat="1" USFirmFlag="Y" PartID="2">
.
.
.
</MktDef>
<MktDef MktID="XEUR" MktSegID="19629" EfctvBizDt="2017-05-11" NxtEfctvBizDt="2017-05-15" MktSeg="FBON" MarketSegmentDesc="EURO BONO FUTURE 8,5-10,5 YEAR" Sym="DE000A163W29" ParentMktSegmID="FBND" Ccy="EUR" MktSegStat="1" USFirmFlag="Y" PartID="2">
.
.
.
</MktDef>
.
.
.
Und das ist mein XSLT
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" >
<xsl:output method="text" omit-xml-declaration="yes" indent="no"/>
<xsl:template match="/">
MktID,MktSegID,EfctvBizDt,NxtEfctvBizDt,MktSeg,MarketSegmentDesc,Sym,ParentMktSegmID,Ccy,MktSegStat,USFirmFlag,PartID
<xsl:for-each select="/">
<xsl:value-of select="concat(ancestor::FIXML/Batch/MktDef/@MktID,',',ancestor::FIXML/Batch/MktDef/@MktSegID,',',ancestor::FIXML/Batch/MktDef/@EfctvBizDt,',',ancestor::FIXML/Batch/MktDef/@NxtEfctvBizDt,',',ancestor::FIXML/Batch/MktDef/@MktSeg,',',ancestor::FIXML/Batch/MktDef/@MarketSegmentDesc,',',ancestor::FIXML/Batch/MktDef/@Sym,',',ancestor::FIXML/Batch/MktDef/@ParentMktSegmID,',',ancestor::FIXML/Batch/MktDef/@Ccy,',',ancestor::FIXML/Batch/MktDef/@MktSegStat,',',ancestor::FIXML/Batch/MktDef/@USFirmFlagt,',',ancestor::FIXML/Batch/MktDef/@PartID,'
')"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Das ist mein Java-Code ..
class Xml2Csv {
public static void main(String args[]) throws Exception {
File stylesheet = new File("style.xsl");
//File xmlSource = new File("Testing-1.xml");
File xmlSource = new File("95FILRDF01PUBLI20170511XEUR6NJ92000.xml");
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(xmlSource);
StreamSource stylesource = new StreamSource(stylesheet);
Transformer transformer = TransformerFactory.newInstance().newTransformer(stylesource);
Source source = new DOMSource(document);
System.out.println(source.toString());
System.out.println("Hello");
Result outputTarget = new StreamResult(new File("MktDef.csv"));
transformer.transform(source, outputTarget);
}
}
ich diese xml bin Parsen und versuchen, die Daten zu erhalten, aus MktDef Attribute und speichern Sie es in CSV wie folgt,
MktID MktSegID EfctvBizDt NxtEfctvBizDt MktSeg MarketSegmentDesc Sym ParentMktSegmID Ccy MktSegStat USFirmFlag PartID
XEUR 14 5/11/2017 5/15/2017 CONF FUT 8-13 Y. SWISS GOV.BONDS 6% CH0002741988 FBND CHF 1 2
XEUR 14 5/11/2017 5/15/2017 CONF FUT 8-13 Y. SWISS GOV.BONDS 6% CH0002741988 FBND CHF 1 2
XEUR 14 5/11/2017 5/15/2017 CONF FUT 8-13 Y. SWISS GOV.BONDS 6% CH0002741988 FBND CHF 1 2
XEUR 14 5/11/2017 5/15/2017 CONF FUT 8-13 Y. SWISS GOV.BONDS 6% CH0002741988 FBND CHF 1 2
.
.
.
Das Problem, mit dem ich gerade konfrontiert bin, ist, dass ich nur die ersten MktDef-Daten bekomme. Ich habe verstanden, dass es ein logisches Problem in XSLT gibt.
Ich bin sehr neu in der Arbeit an XML und XSLT, also könntest du mir bitte helfen. Vielen Dank im Voraus!
Wo ist das Java in all dem? –
Ich habe gerade den Java-Code hinzugefügt. –