I持って、私は(Digesterの注釈を経由して)ApacheのDigesterのパーサを持つオブジェクトモデルにパースするつもりだ、次のXML文書:ApacheのDigesterのXMLパーサーの注釈および複合モデル
<?xml version="1.0" encoding="UTF-8"?>
<Decision>
<Name>Antivirus software for Windows</Name>
<Description>Description 1</Description>
<Url>http://yahoo.com</Url>
<ImageUrl>http://yahoo.com/img.jpg</ImageUrl>
<CriterionGroups>
<CriterionGroup>
<Name>Windows</Name>
<Description>Description 1</Description>
<Criteria>
<Criterion>
<Name>Heuristics</Name>
<Description>Description 1</Description>
</Criterion>
</Criteria>
</CriterionGroup>
</CriterionGroups>
<Criteria>
<Criterion>
<Name>On-demand scan</Name>
<Description>Description 1</Description>
</Criterion>
</Criteria>
<CharacteristicGroups>
<CharacteristicGroup>
<Name>Windows</Name>
<Description>Description 1</Description>
<Characteristics>
<Characteristic>
<Name>Country of origin</Name>
<Description>Description 1</Description>
<ValueType>String</ValueType>
<VisualMode>SelectBox</VisualMode>
<Sortable>true</Sortable>
<Options>
<Option>
<Value>Shareware</Value>
<Description>Description 1</Description>
</Option>
</Options>
</Characteristic>
</Characteristics>
</CharacteristicGroup>
</CharacteristicGroups>
<Characteristics>
<Characteristic>
<Name>License</Name>
<Description>Description 1</Description>
<ValueType>Integer</ValueType>
<VisualMode>Slider</VisualMode>
<Sortable>false</Sortable>
</Characteristic>
</Characteristics>
<Decisions>
<Decision>
<Name>Avast Free Antivirus</Name>
<Description>Description 1</Description>
<Url>http://google.com</Url>
<ImageUrl>http://google.com/img.jpg</ImageUrl>
<Votes>
<Vote>
<CriterionName>On-demand scan</CriterionName>
<Weight>4.3</Weight>
</Vote>
<Vote>
<CriterionName>Heuristics</CriterionName>
<CriterionName>On-demand scan</CriterionName>
<Weight>4.3</Weight>
<Description>Description 1</Description>
</Vote>
</Votes>
<Values>
<Value>
<CharacteristicName>License</CharacteristicName>
<Value>Proprietary</Value>
<Description>Description 1</Description>
</Value>
</Values>
</Decision>
</Decisions>
</Decision>
あなたから見ることができるように
- 決定/条件/基準
- 決定/ CriterionGroups/CriterionGroup /基準/基準 :このXML 2つの異なるパスにより2つの
Criterion
ノードが存在します
この私のオブジェクトモデル:
@ObjectCreate(pattern = "Decision")
public class DecisionNode {
@BeanPropertySetter(pattern = "Decision/Name")
private String name;
@BeanPropertySetter(pattern = "Decision/Description")
private String description;
@BeanPropertySetter(pattern = "Decision/Url")
private String url;
@BeanPropertySetter(pattern = "Decision/ImageUrl")
private String imageUrl;
private List<CriterionGroupNode> criterionGroupNodes = new ArrayList<>();
private List<CriterionNode> criterionNodes = new ArrayList<>();
private List<CharacteristicGroupNode> characteristicGroupNodes = new ArrayList<>();
private List<CharacteristicNode> characteristicNodes = new ArrayList<>();
private List<DecisionNode> decisionNodes = new ArrayList<>();
private List<VoteNode> voteNodes = new ArrayList<>();
private List<ValueNode> valueNodes = new ArrayList<>();
....
@SetNext
public boolean addCriterionGroupNode(CriterionGroupNode criterionGroupNode) {
return criterionGroupNodes.add(criterionGroupNode);
}
....
}
@ObjectCreate(pattern = "Decision/CriterionGroups/CriterionGroup")
public class CriterionGroupNode {
@BeanPropertySetter(pattern = "Decision/CriterionGroups/CriterionGroup/Name")
private String name;
@BeanPropertySetter(pattern = "Decision/CriterionGroups/CriterionGroup/Description")
private String description;
private List<CriterionNode> criterionNodes = new ArrayList<>();
....
@SetNext
public boolean addCriterionNode(CriterionNode criterionNode) {
return criterionNodes.add(criterionNode);
}
....
}
@ObjectCreate(pattern = "Decision/Criteria/Criterion")
public class CriterionNode {
@BeanPropertySetter(pattern = "Decision/Criteria/Criterion/Name")
private String name;
@BeanPropertySetter(pattern = "Decision/Criteria/Criterion/Description")
private String description;
public CriterionNode() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
は、今のところ私はDecision/Criteria/Criterion
を解析することができるよしかしNULL
はまだDecision/CriterionGroups/CriterionGroup/Criteria/Criterion
です。 2つの異なる場所でCriterionNode
を解析できるように、モデルを設定してアノテーションを変更するにはどうすればよいですか?私が見ることができる