我正在尝试用java写出一个带有XOM的graphML文档,但是我不知道如何正确地声明所有的名称空间。为了拥有有效的graphML,我需要一个如下所示的根元素:
<graphml xmlns="http://graphml.graphdrawing.org/xmlns"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns
http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd">我已经能够通过这样做来获得大部分内容
Element root = new Element("graphml");
root.setNamespaceURI("http://graphml.graphdrawing.org/xmlns");
root.addNamespaceDeclaration("xsi", "http://www.w3.org/2001/XMLSchema-instance");问题出在这个标记的最后一个元素,即xsi:schemaLocation。我不知道如何在XOM中表达这一点。我不能把它作为一个普通属性来做,因为它会抛出一个异常(Attribute prefixes must be declared.),而且作为一个额外的名称空间声明也会导致一个异常(NCNames cannot contain colons)。有什么想法吗?
发布于 2009-11-24 03:46:24
这个应该可以了。基本上,您没有为xsi:schemaLocation属性提供名称空间URI。因此,试图创建一个没有名称空间的前缀属性,这显然是行不通的。
root.addAttribute(new Attribute("xsi:schemaLocation",
"http://www.w3.org/2001/XMLSchema-instance",
"http://graphml.graphdrawing.org/xmlns http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd"));请在此处查看正确的属性构造函数
Attribute(String name, String URI, String value)
https://stackoverflow.com/questions/1785385
复制相似问题