如何通过带命名空间的 SAXBuilder 生成 xml?
How to generate xml via SAXBuilder with namespace?
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]/>]]
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]/>]]