【问题标题】:Parse cXML file解析 cXML 文件
【发布时间】:2020-06-27 23:27:54
【问题描述】:

作为响应,我得到以下 cXML,如果我使用 XSLT,它不会被解析。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cXML  SYSTEM "http://xml.cxml.org/schemas/cXML/1.2.046/cXML.dtd">
<cXML payloadID="AF7rzg4Yg6dfzOW5Mfp6PFIAz66C"
      timestamp="2020-06-18T20:26:55+00:00"
      version="1.2.046">
  <Response>
    <Status code="201" text="Acknowledged">Acknowledged</Status>
  </Response>
</cXML>

我遇到了错误,你能建议我如何解析这些文件吗?

无法使用提供的 XML/XSL 输入生成 XML 文档。 org.xml.sax.SAXParseException; systemId:http://xml.cxml.org/schemas/cXML/1.2.046/cXML.dtd;lineNumber:1;列号:1;文档类型声明包含或指向的标记声明必须格式正确。

我的要求是获得类似的输出 XML

<RESULT>
    <Status>Acknowledged</Status>
</RESULT>

你能告诉我 XSLT 吗?

谢谢 鸭潭

【问题讨论】:

标签: xml xslt dtd cxml


【解决方案1】:

如果您的输入文档与上面显示的一样,则需要删除 xml 声明之前的所有空格。在声明之前可以什么都不是。

【讨论】:

  • XML 没有空格,我已经编辑了我的 xml 以避免混淆。
  • 不确定您的问题是什么 - SAX 表示您的第一个字符无效。如果我将该 XML 复制到解析器中,它的格式正确且有效。
  • 当我尝试使用 XSLT 解析这个 XML 时,我遇到了错误。我的要求是获得像 Acknowledged 这样的输出 xml
【解决方案2】:

我无法通过 XSLT 解析它,最后在使用 XSLT 将其从 XML 中删除之前使用了以下表达式。

convertedData = body.replaceAll("<!DOCTYPE((.|\n|\r)*?)\">", "");

【讨论】:

  • 这并不是真正的解决方案。如果这可行,则表明您现在可能正确配置了 SAX 解析器,因为它不会在猜测时加载 DTD。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-20
  • 1970-01-01
  • 2020-11-27
  • 2023-03-25
  • 1970-01-01
  • 2012-11-10
相关资源
最近更新 更多