Mam duży plik xml i analizuję xpath, aby wstawić do niego wartości. To jest część pliku xml, w której wstawiam kilka wartości:

<SERVICES>
    <RELATIONSHIPS>
         <RELATIONSHIP xlink:from="fromValue01" xlink:to="toValue01" />
         <RELATIONSHIP xlink:from="fromValue02" xlink:to="toValue02" />
         <RELATIONSHIP xlink:from="fromValue03" xlink:to="toValue03" />
         <RELATIONSHIP xlink:from="fromValue04" xlink:to="toValue04" />
         <RELATIONSHIP xlink:from="fromValue05" xlink:to="toValue05" />
         <RELATIONSHIP xlink:from="fromValue06" xlink:to="toValue06" />
         <RELATIONSHIP xlink:from="fromValue07" xlink:to="toValue07" />
    </RELATIONSHIPS>
<SERVICES>

Teraz, gdy chcę dodać więcej tych RELATIONSHIP węzłów z tymi samymi atrybutami, ale z różnymi wartościami (np. <RELATIONSHIP xlink:from="fromValue08" xlink:to="toValue08" />), zawsze otrzymuję błąd Duplicate Attribute. To byłby przykład xpath, który analizuję:

/SERVICES/RELATIONSHIPS/RELATIONSHIP[@xlink:from="fromValue08" and @xlink:to="toValue08"]

Parser jest zbyt dużym kodem, aby po prostu tu wkleić, i jestem pewien, że działa dobrze, ponieważ wstawia wszystkie węzły dobrze, tylko ta część tutaj sprawia mi trochę kłopotów. Sprawdziłem też xpath z Altovą i działa.

Moje pytanie brzmi: czy dodawanie węzła z tymi samymi atrybutami, ale z różnymi wartościami jest dozwolone w XML? A jeśli tak, dlaczego program Visual Studio zawsze zgłasza ten błąd?

1
kalbsschnitzel 18 październik 2012, 16:37

2 odpowiedzi

Najlepsza odpowiedź

Na pewno w związku z żądaniem XPath może brakować indeksu dla RELATIONSHIPS

0
Aelios 18 październik 2012, 17:17

Wydaje mi się, że to rozgryzłem. Nie był to taki problem na parserze, jak na xpath. Brakowało mi indeksu na xpath. Więc mój parser wybierał pierwszy RELATIONSHIP i rzeczywiście miał zduplikowane atrybuty XAttributes. Właśnie dodałem indeks przed warunkami atrybutu. Więc w końcu wyglądało to mniej więcej tak:

/SERVICES/RELATIONSHIPS/RELATIONSHIP[8][@xlink:from="fromValue08" and @xlink:to="toValue08"]

Nie wiem, czy jest to poprawna składnia xpath i czy indeks powinien być zgodny z warunkami, ale dla mojego parsera działa.

1
kalbsschnitzel 18 październik 2012, 17:13