programa - Encuentre elementos en un nodo sin el espacio de nombres adecuado, en Java
programas en java (1)
Para hacer coincidir todos los nodos cuyo nombre es ''str'' independientemente del espacio de nombres, use lo siguiente:
NodeList nodes = doc.getDocumentElement().getElementsByTagNameNS("*", str);
El comodín "*" coincidirá con cualquier espacio de nombres. Ver Element.getElementsByTagNameNS(...) .
Edición : además, si @Wheezil se expresó correctamente en un comentario, debe llamar a DocumentBuilderFactory.setNamespaceAware(true)
para que esto funcione, de lo contrario, los espacios de nombres no se detectarán.
Así que tengo un documento XML que he declarado aquí:
DocumentBuilder dBuilder = dbFactory_.newDocumentBuilder();
StringReader reader = new StringReader(s);
InputSource inputSource = new InputSource(reader);
doc_ = dBuilder.parse(inputSource);
Luego tengo una función donde paso una cadena y quiero hacer coincidir eso con un elemento en mi xml:
void foo(String str)
{
NodeList nodelist = doc_.getDocumentElement().getElementsByTagName(str);
}
El problema es que cuando llega el str
no tiene ningún tipo de espacio de nombres, por lo que el xml que estaría probando sería:
<Random>
<tns:node />
</Random>
y la str
será nodo. Así que la lista de nodos ahora es nula porque está esperando tns: node pero pasé en node. Y sé que no es bueno ignorar el espacio de nombres pero en este caso está bien. Mi problema es que no sé cómo buscar un elemento en el nodo mientras ignoro el espacio de nombres. También pensé en agregar el espacio de nombres al str que viene, pero tampoco tengo idea de cómo hacerlo.
Cualquier ayuda sería apreciada grandemente,
Gracias josh