@@ -82,14 +82,15 @@ private void process(Element parent, StreamReceiver receiver) {
82
82
for (Element element : parent .children ()) {
83
83
receiver .startEntity (element .nodeName ());
84
84
Attributes attributes = element .attributes ();
85
+ boolean addedValueAsSubfield = false ;
85
86
for (Attribute attribute : attributes ) {
86
- handleAttributeValuesAsSubfields (receiver , element , attributes , attribute );
87
+ addedValueAsSubfield = handleAttributeValuesAsSubfields (receiver , element , attributes , attribute );
87
88
receiver .literal (attribute .getKey (), attribute .getValue ());
88
89
}
89
90
if (element .children ().isEmpty ()) {
90
91
String text = element .text ().trim ();
91
92
String value = text .isEmpty () ? element .data () : text ;
92
- if (!value .isEmpty ()) {
93
+ if (!value .isEmpty () && ! addedValueAsSubfield ) {
93
94
receiver .literal ("value" , value );
94
95
}
95
96
}
@@ -98,18 +99,20 @@ private void process(Element parent, StreamReceiver receiver) {
98
99
}
99
100
}
100
101
101
- private void handleAttributeValuesAsSubfields (StreamReceiver receiver , Element element ,
102
+ private boolean handleAttributeValuesAsSubfields (StreamReceiver receiver , Element element ,
102
103
Attributes attributes , Attribute attribute ) {
103
104
String fullFieldKey = element .nodeName () + "." + attribute .getKey ();
104
105
if (attrValsAsSubfields .containsKey (fullFieldKey )) {
105
106
String configValue = attrValsAsSubfields .get (fullFieldKey );
106
107
if (configValue .trim ().isEmpty ()) {
107
108
receiver .literal (attribute .getValue (), element .text ().trim ());
109
+ return true ;
108
110
} else {
109
111
String value = attributes .get (configValue );
110
112
receiver .literal (attribute .getValue (), value );
111
113
}
112
114
}
115
+ return false ;
113
116
}
114
117
115
118
public void setAttrValsAsSubfields (String mapString ) {
@@ -128,4 +131,5 @@ public void setAttrValsAsSubfields(String mapString) {
128
131
}
129
132
}
130
133
}
134
+
131
135
}
0 commit comments