通过SPI REST使用唯一标识获得ibm门户页面信息

本文介绍了一种在解析IBM门户特定XML内容时遇到的问题及解决方案。作者在使用标准XPath表达式获取带有命名空间的元素属性时遇到困难,最终通过使用QName参数成功获取属性值。文中提供了完整的Java代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

直接贴代码了, 具体的和ibm 门户完全关联,使用atom 。主要是获得元素的属性值的时候遇到了一些问题,本来使用xpath 的基本形式(/feed/entry/tile/@type)没有问题的,但是/feed/entry/id的属性使用了命名空间,按照上面的模式都不成功,最后只好使用qname形式的参数获得属性值,这基本花了半天的时间才解决。
写道
package test;

import java.io.InputStream;
import java.net.URISyntaxException;

import javax.xml.namespace.QName;

import org.apache.abdera.Abdera;
import org.apache.abdera.model.Document;
import org.apache.abdera.model.Element;
import org.apache.abdera.model.Entry;
import org.apache.abdera.model.Feed;
import org.apache.abdera.parser.Parser;
import org.apache.abdera.protocol.client.AbderaClient;
import org.apache.abdera.protocol.client.ClientResponse;
import org.apache.abdera.xpath.XPath;
import org.apache.commons.httpclient.UsernamePasswordCredentials;

public class NewTesta {

/**
* @param args
*/
public static void main(String[] args) {
NewTesta newTest = new NewTesta();
try {
newTest.getPageInfo();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public void getPageInfo() throws Exception {

Abdera abdera = new Abdera();
AbderaClient client = new AbderaClient(abdera);
client.usePreemptiveAuthentication(true);
try {
client.addCredentials("http://127.0.0.1:10040/wps/myportal", null,
null, new UsernamePasswordCredentials("admin", "password"));
} catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

// 替换为具体的唯一标识 oid:6_CGAH47L00O2V002N5SQ0US3867
ClientResponse response1 = client
.get("http://127.0.0.1:10040/wps/mycontenthandler?uri=cm:oid:6_CGAH47L00O2V002N5SQ0US3867");

Parser parser = Abdera.getNewParser();

InputStream in = response1.getInputStream();
Document<Feed> doc = parser.parse(in);
Feed feed = doc.getRoot();

Entry entry = feed.getEntries().get(0);

System.out.println(entry.getTitle());
System.out.println(entry.getTitleType());
Element theId = entry.getElements().get(1);

XPath xpath = abdera.getXPath();
System.out.println(feed.toString());
org.apache.abdera.parser.stax.FOMIRI o = (org.apache.abdera.parser.stax.FOMIRI) xpath
.selectSingleNode("/a:feed/a:entry/a:id", feed);
QName newQname = new QName(
"http://www.ibm.com/xmlns/prod/websphere/portal/v6.0.1/portal-model",
"uniquename", "portal");
System.out.println(o.getAttributeValue(newQname));

}

}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值