我正在尝试用XOM在Java中写出graphML文档,但是我不知道如何正确地获得所有名称空间声明。为了拥有有效的graphML,我需要有一个如下所示的root元素:
<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
)。有任何想法吗? 最佳答案
这应该做。基本上,您没有为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)
关于java - 用XOM编写GraphML?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1785385/