У меня есть данные XML, как показано ниже:
<list>
<com.domain.Products>
<cla__id>
<cname>class1</cname>
<id>1</id>
</cla__id>
<name>pname1</name>
<id>1</id>
</com.domain.Products>
<com.domain.Products>
<cla__id reference="../../com.domain.Products/cla__id"/>
<name>pname2</name>
<id>2</id>
</com.domain.Products>
</list>
Я хочу использовать xpath для получения значения для узла cname (значение 'class1'), а для второго comУзел .domain.Products, он просто имеет ссылку на узел cla__id, который в точности совпадает с узлом первого узла com.domain.Products ...
Итак, cname для второго com.Узел domain.Products на самом деле совпадает с первым узлом com.domain.Products, оба являются 'class1', но если я получу значение cla__id / cname xpath, я смогу получить его правильно только для первого com.domain.Products.узел, второй узел com.domain.Products будет иметь только пустое значение, что неверно.
Как добиться правильного результата?Большое спасибо.
attach: Мой текущий Java-код smartgwt делает это следующим образом:
......
private ProductsDS(String id) {
String recordName = "com.domain.Products";
setID(id);
setDataFormat(DSDataFormat.XML);
setRecordXPath("//" + recordName);
DataSourceField pkField = new DataSourceField("id", FieldType.INTEGER, "id");
pkField.setHidden(true);
pkField.setPrimaryKey(true);
DataSourceField claIdField = new DataSourceField("cla__id/cname", FieldType.TEXT, "classtype");
claIdField.setValueXPath("cla__id/cname");
......
ps: просто дважды отредактируйте, чтобы сделать сообщение лучше ..