Вы используете метод getElementsByTagName
, который возвращает объект org.w3c.dom.NodeList
. В случае отсутствия элементов с данным именем NodeList.getLength
метод возвращает 0
. Итак, код ниже безопасно получает текстовое содержимое:
NodeList locations = document.getElementsByTagName("location");
if (locations.getLength() > 0) {
String textContent = locations.item(0).getTextContent();
System.out.println(textContent);
}
Или вы можете создать метод, который будет это делать:
public static String getFirstTextContent(Document node, String tagName) {
NodeList locations = node.getElementsByTagName(tagName);
if (locations.getLength() > 0) {
return locations.item(0).getTextContent();
}
return "";
}
и ваш код может выглядеть так: ]
Единственное, что я могу придумать, это набор из трех функций (без Выражение <>
stuff):
MyGenericFunction<T>(T t)
where T : struct
MyGenericFunction<T>(T? t)
where T : struct
MyGenericFunction(string s)
ОБНОВЛЕНИЕ Учитывая, что метод перегружен, я могу предложить:
class Holder
{
private object value;
public Holder(object value)
{
this.value = value;
}
public static implicit operator Holder(DateTime dt)
{
return new Holder(dt);
}
public static implicit operator Holder(string s)
{
return new Holder(s);
}
// Implicit conversion operators from primitive types
}
Таким образом, ваш метод становится
MyGenericMethod(Holder h);
Все еще очень громоздким, но, тем не менее, может сработать.