【问题标题】:Getting text of attribute in xml using vtd-xml in java在java中使用vtd-xml获取xml中的属性文本
【发布时间】:2011-05-14 01:19:40
【问题描述】:

给定以下 xml:

<JUT>
    <DDT>
        <SSG q="textGoal">Lorem ipsum...</SSG>
    </DDT>
    ....
    ...
</JUT>

我正在使用带有 XPath 的 vtd-xml 来检索“textGoal”,如下所示:

        VTDGen vg = new VTDGen();
        vg.setDoc(xmlContent);
        vg.parse(false);
        VTDNav vn = vg.getNav();
        AutoPilot ap = new AutoPilot(vn);
        int node = 0;

        ap.selectXPath("//SSG[1]/@q");
        node = ap.evalXPath();
        if(node != -1) {
            myString = vn.toString(node);
        }

这会将 myString 设为 'q' 而不是 'textGoal'。我有两个问题:

  1. 我做错了什么?
  2. 我知道'textGoal' 是URL 转义的。 vtd-xml 是做 URL-UNescape 还是我必须自己做?

问候

【问题讨论】:

    标签: java xml xpath vtd-xml


    【解决方案1】:

    使用vn.getAttributeVal(vn.toString(node))

    【讨论】:

      【解决方案2】:

      另一种方法是

      vn.toString(node+1) 
      

      假设节点不是-1。至于URL转义部分,有toString()toRawString()toNormalizedString()可供选择

      【讨论】:

      • 但是当我的路径可变时该怎么办?我怎么知道它是否请求属性(调用 getAttributeVal(vn.toString(node))toString(node+1))或不请求属性(调用 toString(node))?
      • 变量路径是什么意思?
      • 用户可以输入 XPath /foo/bar/text()/foo/bar/@attr/foo[@attr='baz']/bar/text() - 我不知道。我如何知道要使用哪些 vtd-xml 方法?或者为什么没有一体化的方法?
      • 因为有不同的用户需求...这和xml规范对字符串的处理有关...一般来说toString()是最常见的
      • 我认为xpath评估返回属性名称节点索引与vtd-xml的thw设计目标一致。一种通用的解决方案是使用自动驾驶仪的 evalPathToString 方法,该方法直接为您提供 attr val 字符串。
      猜你喜欢
      • 1970-01-01
      • 2017-05-18
      • 1970-01-01
      • 2011-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-18
      相关资源
      最近更新 更多