在java处理xml文件时候遇到了下面的一个问题:
powerdesigner设计的表中有主键的情况下   .PDM文件生成的xml中就会生成下面几行代码: <c:PrimaryKey>
  <o:Key Ref="o30" />
</c:PrimaryKey>然后我就用java处理,能够读到主键信息,代码如下:
String keyId = ((Element) tableNode.selectSingleNode("c:PrimaryKey/o:Key")).attributeValue("Ref");
但是有的表中我没设计主键,所以就不会产生c:PrimaryKey/o:Key这几行代码,然后我上面
用java处理xml文件的那几行java代码就会报错,就不能那样写了,
请问:我该怎么判断一个表中有没有主键?或者我的java代码哪里改加个什么判断?java,xmlpowerdesigner

解决方案 »

  1.   

    用的dom 解析对吧,  那就先获取子元素<o:Key Ref="o30" /> 看是否为空tableNode.getElementsByTagName()  返回子元素集合
      

  2.   

    建议你参考下PageOffice。网上有很多它的示例代码,搜搜看
      

  3.   

    Node keyId = ((Element) tableNode.selectSingleNode("c:PrimaryKey/o:Key/@Ref"));
    if(keyId != null) String id = keyId.getText();
      

  4.   

    这句话好像不能行,报错的,我也没有判断ref属性是否存在,直接这样写的:
    List keyList = tableNode.selectSingleNode("c:PrimaryKey/o:Key")
    if(keyList.isEmpty()||keyList.length==0){
    }
     else{
    Node keyId = ((Element) tableNode.selectSingleNode("c:PrimaryKey/o:Key/@Ref")); 
    }
    这样就能起到效果了,谢谢你哈。