Empire Burlesqu..."> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <link rel="stylesheet" href="../../css/main.css"> <link href="https://fonts.googleapis.com/css?family=Quicksand&display=swap" rel="stylesheet"> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script>window.jQuery || document.write('<script src="../../js/vendors/jquery-3.3.1.min.js"><\/script>')</script> <script>document.write('<script src="//pagea' + 'd2.googles' + 'yndication.com/pagea' + 'd/js/a' + 'dsby' + 'google.js"><\/script>')</script> <script> var superSpecialObject = {}; superSpecialObject['google_a' + 'd_client'] = 'ca-p' + 'ub-4469282388984999'; superSpecialObject['enable_page_level_a' + 'ds'] = true; (window['a' + 'dsbygoogle'] = window['a' + 'dsbygoogle'] || []).push(superSpecialObject); </script> </head> <body> <!--[if lte IE 9]> <p class="browserupgrade">You are using an <strong>outdated</strong> browser. Please <a href="https://browsehappy.com/">upgrade your browser</a> to improve your experience and security.</p> <![endif]--> <header class="page-header js-page-header"> <a class="page-header-logo-container" href="https://geek-questions.imtqy.com/index.html"></a> <div class="page-header-text">All geek questions in one place</div> </header> <section class="page js-page"><div itemscope="" itemtype="http://schema.org/QAPage" class="page"><div class="main-col" itemprop="mainEntity" itemscope="" itemtype="http://schema.org/Question"><div class="question-header"><h1 itemprop="name"> How to convert xslt result to java objects </h1></div><div class="question"><div class="question-row"><div class="question-text"><div class="description" itemprop="text"><p> I have an <strong>XML file</strong> : </p><pre class="prettyprint-override"><code class="hljs xml"><span class="hljs-meta"><?xml version="1.0" encoding="ISO-8859-1"?></span> <span class="hljs-tag"><<span class="hljs-name">catalog</span>></span> <span class="hljs-tag"><<span class="hljs-name">cd</span>></span> <span class="hljs-tag"><<span class="hljs-name">title</span>></span>Empire Burlesque<span class="hljs-tag"></<span class="hljs-name">title</span>></span> <span class="hljs-tag"><<span class="hljs-name">artist</span>></span>Bob Dylan<span class="hljs-tag"></<span class="hljs-name">artist</span>></span> <span class="hljs-tag"><<span class="hljs-name">country</span>></span>USA<span class="hljs-tag"></<span class="hljs-name">country</span>></span> <span class="hljs-tag"><<span class="hljs-name">company</span>></span>Columbia<span class="hljs-tag"></<span class="hljs-name">company</span>></span> <span class="hljs-tag"><<span class="hljs-name">price</span>></span>10.90<span class="hljs-tag"></<span class="hljs-name">price</span>></span> <span class="hljs-tag"><<span class="hljs-name">year</span>></span>1985<span class="hljs-tag"></<span class="hljs-name">year</span>></span> <span class="hljs-tag"></<span class="hljs-name">cd</span>></span> <span class="hljs-tag"></<span class="hljs-name">catalog</span>></span></code> </pre> <p> And this <strong>XSL file</strong> : </p><pre class="prettyprint-override"> <code class="hljs xml"> <span class="hljs-meta"><?xml version="1.0" ?></span> <span class="hljs-tag"><<span class="hljs-name">xsl:stylesheet</span> <span class="hljs-attr">version</span>=<span class="hljs-string">"2.0"</span> <span class="hljs-attr">xmlns:xsl</span>=<span class="hljs-string">"http://www.w3.org/1999/XSL/Transform"</span>></span> <span class="hljs-tag"><<span class="hljs-name">xsl:template</span> <span class="hljs-attr">match</span>=<span class="hljs-string">"/"</span>></span> <span class="hljs-tag"><<span class="hljs-name">xsl:value-of</span> <span class="hljs-attr">select</span>=<span class="hljs-string">"/catalog/cd/artist"</span>/></span> <span class="hljs-tag"><<span class="hljs-name">xsl:variable</span> <span class="hljs-attr">name</span> = <span class="hljs-string">"artist"</span> <span class="hljs-attr">select</span> = <span class="hljs-string">"/catalog/cd/artist()"</span>/></span> <span class="hljs-tag"><<span class="hljs-name">xsl:variable</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"year"</span> <span class="hljs-attr">select</span>=<span class="hljs-string">"/catalog/cd/year()"</span>/></span> <span class="hljs-tag"><<span class="hljs-name">xsl:Object-bean</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"{$artist}"</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"{$year}"</span>></span> <span class="hljs-tag"></<span class="hljs-name">xsl:Object-bean</span>></span> <span class="hljs-tag"></<span class="hljs-name">xsl:template</span>></span> <span class="hljs-tag"></<span class="hljs-name">xsl:stylesheet</span>></span></code> </pre><p> Now I want to convert the result to a java class. </p><p> <strong>Java:</strong> </p><pre class="prettyprint-override"> <code class="hljs java"><span class="hljs-meta">@XmlRootElement</span>(name = <span class="hljs-string">"Object-bean"</span>) <span class="hljs-meta">@XmlAccessorType</span>(XmlAccessType.NONE) <span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">ObjectBean</span> </span>{ <span class="hljs-meta">@XmlAttribute</span>(name = <span class="hljs-string">"name"</span>) <span class="hljs-keyword">private</span> String name; <span class="hljs-meta">@XmlAttribute</span> <span class="hljs-keyword">private</span> String id; <span class="hljs-function"><span class="hljs-keyword">public</span> String <span class="hljs-title">getName</span><span class="hljs-params">()</span> </span>{ <span class="hljs-keyword">return</span> name; } <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">setName</span><span class="hljs-params">(String name)</span> </span>{ <span class="hljs-keyword">this</span>.name = name; } <span class="hljs-function"><span class="hljs-keyword">public</span> String <span class="hljs-title">getId</span><span class="hljs-params">()</span> </span>{ <span class="hljs-keyword">return</span> id; } <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">setId</span><span class="hljs-params">(String id)</span> </span>{ <span class="hljs-keyword">this</span>.id = id; } }</code> </pre><p> but when I run it, it will show me this error: </p><pre class="prettyprint-override"> <code class="hljs css"><span class="hljs-selector-tag">Error</span> <span class="hljs-selector-tag">at</span> <span class="hljs-selector-tag">xsl</span><span class="hljs-selector-pseudo">:Object-bean</span> <span class="hljs-selector-tag">on</span> <span class="hljs-selector-tag">line</span> 7 <span class="hljs-selector-tag">column</span> 49 <span class="hljs-selector-tag">of</span> <span class="hljs-selector-tag">test</span><span class="hljs-selector-class">.xsl</span>: <span class="hljs-selector-tag">XTSE0010</span>: <span class="hljs-selector-tag">Unknown</span> <span class="hljs-selector-tag">XSLT</span> <span class="hljs-selector-tag">element</span>: <span class="hljs-selector-tag">Object-bean</span> <span class="hljs-selector-tag">Exception</span> <span class="hljs-selector-tag">in</span> <span class="hljs-selector-tag">thread</span> "<span class="hljs-selector-tag">main</span>" <span class="hljs-selector-tag">javax</span><span class="hljs-selector-class">.xml</span><span class="hljs-selector-class">.transform</span><span class="hljs-selector-class">.TransformerConfigurationException</span>: <span class="hljs-selector-tag">Failed</span> <span class="hljs-selector-tag">to</span> <span class="hljs-selector-tag">compile</span> <span class="hljs-selector-tag">stylesheet</span>. 1 <span class="hljs-selector-tag">error</span> <span class="hljs-selector-tag">detected</span>. <span class="hljs-selector-tag">at</span> <span class="hljs-selector-tag">net</span><span class="hljs-selector-class">.sf</span><span class="hljs-selector-class">.saxon</span><span class="hljs-selector-class">.PreparedStylesheet</span><span class="hljs-selector-class">.prepare</span>(<span class="hljs-selector-tag">PreparedStylesheet</span><span class="hljs-selector-class">.java</span><span class="hljs-selector-pseudo">:176)</span> <span class="hljs-selector-tag">at</span> <span class="hljs-selector-tag">net</span><span class="hljs-selector-class">.sf</span><span class="hljs-selector-class">.saxon</span><span class="hljs-selector-class">.TransformerFactoryImpl</span><span class="hljs-selector-class">.newTemplates</span>(<span class="hljs-selector-tag">TransformerFactoryImpl</span><span class="hljs-selector-class">.java</span><span class="hljs-selector-pseudo">:139)</span> <span class="hljs-selector-tag">at</span> <span class="hljs-selector-tag">net</span><span class="hljs-selector-class">.sf</span><span class="hljs-selector-class">.saxon</span><span class="hljs-selector-class">.TransformerFactoryImpl</span><span class="hljs-selector-class">.newTransformer</span>(<span class="hljs-selector-tag">TransformerFactoryImpl</span><span class="hljs-selector-class">.java</span><span class="hljs-selector-pseudo">:91)</span> <span class="hljs-selector-tag">at</span> <span class="hljs-selector-tag">XslExecutor</span><span class="hljs-selector-class">.main</span>(<span class="hljs-selector-tag">XslExecutor</span><span class="hljs-selector-class">.java</span><span class="hljs-selector-pseudo">:28)</span></code> </pre><p> please help as soon as possible. </p></div><div class="favorite hidden"><i class="far fa-star"></i></div><div class="votes-question"><i class="glyphicon glyphicon-arrow-ups"></i><div class="vote-count greenc" itemprop="upvoteCount"> +6 </div><i class="glyphicon glyphicon-arrow-down"></i></div><div class="tags"> <a href="https://translate.googleusercontent.com/translate_c?depth=1&rurl=translate.google.com&sl=ru&sp=nmt4&tl=en&u=" class="tag" title="show questions tagged with 'java'" rel="tag">java</a> <a href="https://translate.googleusercontent.com/translate_c?depth=1&rurl=translate.google.com&sl=ru&sp=nmt4&tl=en&u=" class="tag" title="show questions tagged 'xslt'" rel="tag">xslt</a> <a href="https://translate.googleusercontent.com/translate_c?depth=1&rurl=translate.google.com&sl=ru&sp=nmt4&tl=en&u=" class="tag" title="show questions tagged with 'annotations'" rel="tag">annotations</a> </div><div class="clearfix"></div><div class="action-time"> <span itemprop="author" itemscope="" itemtype="http://schema.org/Person"><span itemprop="name"><a href="https://translate.googleusercontent.com/translate_c?depth=1&rurl=translate.google.com&sl=ru&sp=nmt4&tl=en&u=" rel="noopener" target="_blank">user2335004</a></span></span> <time title="2013-07-31 06:37" itemprop="dateCreated" datetime="2013-07-31T06:37:06+0000"> Jul 31 '13 at 6:37 </time></div> <a class="aa-link" href="https://translate.googleusercontent.com/translate_c?depth=1&rurl=translate.google.com&sl=ru&sp=nmt4&tl=en&u=" target="_blank" rel="noopener">source</a> <a class="s-link" href="https://translate.googleusercontent.com/translate_c?depth=1&rurl=translate.google.com&sl=ru&sp=nmt4&tl=en&u=" title="share">share</a> <div class="clearfix"></div></div></div></div><ins style="height: 90px;display: block;" data-zxname="zx-adnet" data-zxadslot="ZX-QRST" data-zxw="0" data-zxh="90" data-zxid="2" data-overlay="false"></ins><div class="answers " id="answers_hash"><div class="answers-header"> <span class="pull-left"><span itemprop="answerCount">2</span> answers</span> <div class="clearfix"></div></div><div class="answer-pager hidden"></div><div class="answer accepted" id="3328236_hash" itemscope="" itemtype="http://schema.org/Answer" itemprop="acceptedAnswer"><div class="answer-row"><div class="answer-text"><div class="desc" itemprop="text"><p> XML stores raw data (document A). XSLT is a conversion template that converts XML data (Document A) into another XML document (Document B). And finally, you are trying to customize the output of an XSLT template (Document B) to a POJO annotated with JAXB. JAXB annotations work like the XSLT template. They provide a binding mechanism between XML and POJO. </p><pre class="prettyprint-override"> <code class="hljs nginx"> <span class="hljs-attribute">XSLT</span> JAXB</code> </pre><p> (XML document A) ---------------------> (XML document B) --------------- - ----> POJO </p><p> This explains, simply in order to establish a common understanding, the output you show suggests that the XSLT transform does not work. In fact, the XSL that you provide is completely erroneous. Start with something similar that works with the XML you provided: </p><pre class="prettyprint-override"> <code class="hljs xml"><span class="hljs-meta"><?xml version="1.0" ?></span> <span class="hljs-tag"><<span class="hljs-name">xsl:stylesheet</span> <span class="hljs-attr">version</span>=<span class="hljs-string">"2.0"</span> <span class="hljs-attr">xmlns:xsl</span>=<span class="hljs-string">"http://www.w3.org/1999/XSL/Transform"</span>></span> <span class="hljs-tag"><<span class="hljs-name">xsl:template</span> <span class="hljs-attr">match</span>=<span class="hljs-string">"/"</span>></span> <span class="hljs-tag"><<span class="hljs-name">xsl:element</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"Object-bean"</span>></span> <span class="hljs-tag"><<span class="hljs-name">xsl:attribute</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"artist"</span>></span> <span class="hljs-tag"><<span class="hljs-name">xsl:value-of</span> <span class="hljs-attr">select</span>=<span class="hljs-string">"/catalog/cd/artist"</span>/></span> <span class="hljs-tag"></<span class="hljs-name">xsl:attribute</span>></span> <span class="hljs-tag"><<span class="hljs-name">xsl:attribute</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"year"</span>></span> <span class="hljs-tag"><<span class="hljs-name">xsl:value-of</span> <span class="hljs-attr">select</span>=<span class="hljs-string">"/catalog/cd/year"</span>/></span> <span class="hljs-tag"></<span class="hljs-name">xsl:attribute</span>></span> <span class="hljs-tag"></<span class="hljs-name">xsl:element</span>></span> <span class="hljs-tag"></<span class="hljs-name">xsl:template</span>></span> <span class="hljs-tag"></<span class="hljs-name">xsl:stylesheet</span>></span></code> </pre></div><div class="votes-answer"><i class="glyphicon glyphicon-arrow-ups"></i><div class="vote-count greenc" itemprop="upvoteCount"> +1 </div><i class="glyphicon glyphicon-arrow-down"></i></div><div class="clearfix"></div><div class="action-time"> <span itemprop="author" itemscope="" itemtype="http://schema.org/Person"><span itemprop="name"><a href="https://translate.googleusercontent.com/translate_c?depth=1&rurl=translate.google.com&sl=ru&sp=nmt4&tl=en&u=" rel="noopener" target="_blank">Daniel Cerecedo</a></span></span> <time title="2013-07-31 08:30" itemprop="dateCreated" datetime="2013-07-31T08:30:51+0000"> Jul 31 '13 at 8:30 </time></div> <a class="aa-link" href="https://translate.googleusercontent.com/translate_c?depth=1&rurl=translate.google.com&sl=ru&sp=nmt4&tl=en&u=" target="_blank" rel="noopener">source</a> <a itemprop="url" class="s-link" href="https://translate.googleusercontent.com/translate_c?depth=1&rurl=translate.google.com&sl=ru&sp=nmt4&tl=en&u=" title="share">share</a> <div class="clearfix"></div></div></div></div><ins style="height: 90px;display: block;margin-top: 15px;" data-zxname="zx-adnet" data-zxadslot="ZX-QRST" data-zxw="0" data-zxh="90" data-zxid="3" data-overlay="false"></ins><div class="answer last rltd" id="3328235_hash" itemscope="" itemtype="http://schema.org/Answer" itemprop="suggestedAnswer"><div class="answer-row"><div class="answer-text"><div class="desc" itemprop="text"><p> The cause of the error is your invalid xslt template. What do you want to achieve with xslt conversion? If at the same time you want to build a POJO, this is not a good idea. </p><p> First you need to convert your initial xml file using the xslt template, after which you need to untie the xml with the POJO using JAXB. </p></div><div class="votes-answer"><i class="glyphicon glyphicon-arrow-ups"></i><div class="vote-count " itemprop="upvoteCount"> 0 </div><i class="glyphicon glyphicon-arrow-down"></i></div><div class="clearfix"></div><div class="action-time"> <span itemprop="author" itemscope="" itemtype="http://schema.org/Person"><span itemprop="name"><a href="https://translate.googleusercontent.com/translate_c?depth=1&rurl=translate.google.com&sl=ru&sp=nmt4&tl=en&u=" rel="noopener" target="_blank">Mike</a></span></span> <time title="2013-07-31 08:02" itemprop="dateCreated" datetime="2013-07-31T08:02:40+0000"> Jul 31 '13 at 8:02 </time></div> <a class="aa-link" href="https://translate.googleusercontent.com/translate_c?depth=1&rurl=translate.google.com&sl=ru&sp=nmt4&tl=en&u=" target="_blank" rel="noopener">source</a> <a itemprop="url" class="s-link" href="https://translate.googleusercontent.com/translate_c?depth=1&rurl=translate.google.com&sl=ru&sp=nmt4&tl=en&u=" title="share">share</a> <div class="clearfix"></div></div></div></div><div class="answer-pager hidden"></div></div></div></div><p>Source: <a rel="nofollow" href="https://habr.com/ru/post/950688/">https://habr.com/ru/post/950688/</a></p> <section class="more-articles-navigation-panel js-more-articles-navigation-panel"> <h4>More articles:</h4> <nav class="list-of-articles-container js-list-of-articles-container"><ul class="list-of-pages js-list-of-pages"> <li><a href="../950683/index.html">Embedding an object using @Value in an abstract class - spring</a></li> <li><a href="../950684/index.html">How to translate Enum to GreenDAO - android</a></li> <li><a href="../950685/index.html">Floating video player in Android? - android</a></li> <li><a href="../950686/index.html">PHP reads a file as an array of bytes - php</a></li> <li><a href="../950687/index.html">assign exec-maven-plugin output to a variable - maven</a></li> <li><a href="../950689/index.html">How to set PointIntervals per month in HighChart - javascript</a></li> <li><a href="../950690/index.html">How to get confirmation from Kafka - real-time-data</a></li> <li><a href="../950691/index.html">Failed to get maven to boot from HTTPS addresses behind the proxy server - maven-2</a></li> <li><a href="../950692/index.html">Google Forms answer with Python? - python</a></li> <li><a href="../950693/index.html">Build Automation for AutoCAD Lisp Files - compilation</a></li> </ul></nav> </section><br /> <a href="../../allArticles.html"><strong>All Articles</strong></a> <script src="../../js/main.js"></script> <!-- Yandex.Metrika counter --> <script type="text/javascript" > (function (d, w, c) { (w[c] = w[c] || []).push(function() { try { w.yaCounter62683636 = new Ya.Metrika({ id:62683636, clickmap:true, trackLinks:true, accurateTrackBounce:true, webvisor:true }); } catch(e) { } }); var n = d.getElementsByTagName("script")[0], s = d.createElement("script"), f = function () { n.parentNode.insertBefore(s, n); }; s.type = "text/javascript"; s.async = true; s.src = "https://mc.yandex.ru/metrika/watch.js"; if (w.opera == "[object Opera]") { d.addEventListener("DOMContentLoaded", f, false); } else { f(); } })(document, window, "yandex_metrika_callbacks"); </script> <noscript><div><img src="https://mc.yandex.ru/watch/62683636" style="position:absolute; left:-9999px;" alt="" /></div></noscript> <!-- Google Analytics --> <script> window.ga = function () { ga.q.push(arguments) }; ga.q = []; ga.l = +new Date; ga('create', 'UA-166339405-1', 'auto'); ga('send', 'pageview') </script> <script src="https://www.google-analytics.com/analytics.js" async defer></script> </section> <footer class="page-footer"> <div class="page-footer-legal-info-container page-footer-element"> <p> Geek Questions | <span class="page-footer-legal-info-year js-page-footer-legal-info-year">2019</span> </p> </div> <div class="page-footer-counters-container page-footer-element"> <a class="page-footer-counter-clustrmap" href='#' title='Visit tracker'><img src='https://clustrmaps.com/map_v2.png?cl=698e5a&w=271&t=t&d=x9KFE5t3Mv44EqtuX_BNXcB69A0sIUZAkKxnezcia0Y&co=3a3a3a&ct=ffffff'/></a> </div> </footer> </body> </html>