当前位置: 首页 > 知识库问答 >
问题:

从XPATH创建XML

单于轶
2023-03-14

我是一个xml和XSL的新手,使用遗留平台...
我正在寻找一个从XPath创建xml的解决方案。碰巧看到这篇文章如何从一组XPath表达式生成XML文件?帮了我大忙。
与“comments”一节中讨论的请求类似,我试图将整个XSLT作为字符串传递,并使用Saxon作为sting back接收结果。接收结果为字符串,没有问题。但是当将XSL作为字符串传递时,它会抱怨“document()”,它是 document('')”/>的一部分。
错误是“SXXP0003:XML解析器报告的错误:Prolog中不允许内容。”我的基本要求是我应该能够传递XSL(整个文件或“vpop”部分)作为字符串,并应该在另一个字符串中接收结果,而不涉及任何文件。这样,我就可以提高性能并使其通用性,以便我们商店中任何不知道如何处理XML的人仍然可以生成一个...

我的java代码看起来像..

 public static String simpleTransform(final String xsltStr) {

     String strResult = "";

     TransformerFactory tFactory = TransformerFactory.newInstance();
     String tempXMLStr = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<OpnXMLTAG>Dummy</OpnXMLTAG>";

     try {
         StringWriter writer = new StringWriter();
         StreamResult result = new StreamResult(writer);
         StreamSource XSLSource = new StreamSource(new StringReader(xsltStr));

         Transformer transformer = tFactory.newTransformer(XSLSource );

         transformer.transform(new StreamSource(new StringReader(tempXMLStr)), result);

         strResult = writer.toString();

     } catch (Exception e) {
         e.printStackTrace();
     }

     return strResult;

 }

我传递的XSLT字符串与前面的文章相同。

共有1个答案

贾俊喆
2023-03-14

当您调用document(“”)时,它将“”视为相对URI引用,要针对样式表的基URI进行解析。如果样式表的基URI未知,这将不起作用,当您将样式表作为StreamSource包装StringReader而没有SystemID时就是这种情况。

在Saxon的情况下,document('')实际上需要重新读取样式表。它不会在运行时保留源文件,以防需要。因此,您需要(a)提供一个URI作为StreamSource上的systemId属性(任何URI都可以,它实际上不会被读取),以及(b)提供一个URIResolver来解析对document('')的调用并提供原始字符串。

 类似资料:
  • 下面是SVG的html,请帮助我为SVG创建XPATH

  • 问题内容: 我创建了一个简单的POJO: 经过一番搜索,我发现了这一点: 但是有了这个我得到了错误: 我找到了另一个解决方案: 但是这种方法不存在。 那么如何将POJO转换为JSON? 问题答案: 只需使用java Gson API : 然后您可以从json 创建一个,如下所示: 看看 GSON用户指南 ,这 SIMPLE GSON实例 的详细信息。

  • 我正在尝试通过LambdaMetafactory动态创建BiConsumer类型的方法引用。我试图应用 https://www.cuba-platform.com/blog/think-twice-before-using-reflection/ 上的两种方法 - createVoidHandlerLambda和这里的Create BiConsumer作为字段设置器,而不反映Holger的答案。

  • 大家好 错误:org.json.jsonException:不是原始数组:类org.json.jsonArray 我不明白为什么这是一个问题。我想从对象中获得JSONArray。

  • 我想在Xapth的帮助下为无限数据创建一个xpath。 我尝试使用下面的XPath(使用follows-sibling和child)定位元素,但没有成功。 请找到下图供您参考。在此输入图像描述在此输入图像描述 请帮帮忙。

  • 问题内容: 我们正在从Oracle JDK / JRE切换到OpenJDK。现在,我只找到了JDK,但我也想从OpenJDK获得JRE。这是为了在客户端上安装我们的应用程序而无需完整的JDK。 有没有一种方法可以从适用于Windows X64的OpenJDK创建JRE包? 问题答案: 受到文章使用jlink为非模块化应用程序构建Java运行时的启发,我使用了以下命令: 获取所有可用的openjdk