Jestem nowy w języku C# i właśnie zacząłem używać XmlElement i jego metody SelectSingleNode. W moim pliku XML znajduje się tag, który może mieć wartość (tj. <tag>value</tag>
) lub być pusty (tj. <tag></tag>
). Jeśli jest pusty, SelectSingleNode zwraca wartość null.C# XmlElement: SelectSingleNode zwraca wartość pustą dla pustego ciągu?
obecnie używam następujący kod do połowu wartość tagu:
XmlElement elem = ....
string s = elem.SelectSingleNode("somepath").Value;
Ten kod oczywiście podnosi wyjątek dla pustych tagów. Jednak dla mnie pusty tag jest prawidłową wartością, gdzie oczekuję wartości "" mojego ciągu.
Zawijanie każdego połączenia do SelectSingleNode z try ... catch wydaje się ogromnym marnowaniem kodu (mam wiele pól, które mogą być puste) i jestem pewien, że jest lepszy sposób na osiągnięcie tego.
Jakie jest zalecane podejście?
EDIT:
następstwie wniosków, przykładowy kod XML będzie:
<Elements>
<Element>
<Name>Value</Name>
<Type>Value</Type> <-- may be empty
<Color>Value</Color>
</Element>
<Element>
<Name>Value</Name>
<Type>Value</Type>
<Color>Value</Color>
</Element>
</Elements>
Kod CS:
XmlDocument doc = new XmlDocument();
doc.Load("name.xml");
foreach (XmlElement elem in doc.SelectNodes("Elements/Element"))
{
myvalue = elem.SelectSingleNode("Type/text()").Value;
}
Czy możesz zamieścić bardziej kompletny przykład kodu? Lub taki, który ma bezpośrednią korelację z dostarczonym blokiem XML? –
Czy możesz opublikować próbkę XML? –
Tak, trochę więcej przykładowego kodu i XML, którego używasz do parsowania. Użyłem SelectSingleNode w przeszłości i nie widziałem takiego zachowania, o którym wspomniałeś. – SolutionYogi