gpt4 book ai didi

java - 如何通过带有命名空间的 SAXBuilder 生成 xml?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:21:08 24 4
gpt4 key购买 nike

xml 作为字符串:

String inputStr = "<f:table f:id=\"1\">\n" +
" <f:name>African Coffee Table</f:name>\n" +
" <f:width>80</f:width>\n" +
" <f:length>120</f:length>\n" +
"</f:table>";

我想生成这个 xml 到 jdom 文档:

StringReader stringReader = new StringReader(inputStr);
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(stringReader);

但是 doc 是空的,当我想获取根元素时,我得到一个 NullPointerException

如何从带有命名空间的字符串生成 xml?

最佳答案

当您运行该代码时,您应该得到一个 org.jdom2.input.JDOMParseException。这是我得到的:

org.jdom2.input.JDOMParseException: Error on line 1: The prefix "f" for element "f:table" is not bound.

所以正如我在评论中提到的,您需要为 f 前缀提供命名空间 URI,如下所示:

String inputStr = "<f:table f:id=\"1\" xmlns:f=\"http://millka_15.namespace\">\n" +

我刚刚使用 http://millka_15.namespace 作为占位符,我假设您知道实际的命名空间 URI 应该是什么。

以下代码:

String inputStr = "<f:table f:id=\"1\" xmlns:f=\"http://millka_15.namespace\">\n" +
" <f:name>African Coffee Table</f:name>\n" +
" <f:width>80</f:width>\n" +
" <f:length>120</f:length>\n" +
"</f:table>";

StringReader stringReader = new StringReader(inputStr);
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(stringReader);

System.out.println(doc);

此输出结果:

[Document:  No DOCTYPE declaration, Root is [Element: <f:table [Namespace: http://millka_15.namespace]/>]]

关于java - 如何通过带有命名空间的 SAXBuilder 生成 xml?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56476948/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com