【问题标题】:Writing GraphML with XOM?用 XOM 编写 GraphML?
【发布时间】:2009-11-23 19:23:46
【问题描述】:

我正在尝试用 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)。有什么想法吗?

【问题讨论】:

    标签: java xml xom graphml


    【解决方案1】:

    应该这样做。基本上,您没有为 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)

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-27
    • 1970-01-01
    • 1970-01-01
    • 2017-01-08
    • 1970-01-01
    相关资源
    最近更新 更多