nodo manejo leer desde atributos archivos acceder java xml dom

manejo - nodelist java



Problemas al configurar un nuevo valor de nodo en java, dom, anĂ¡lisis xml (4)

El siguiente código:

Element node = doc_.createElement("New_Node"); node.setTextContent("This is the content"); //adds content node.setAttribute("attrib", "attrib_value"); //adds an attribute

produce:

<New_Node attrib="attrib_value">This is the content</New_Node>

Espero que esto aclare.

Tengo el siguiente código:

DocumentBuilder dBuilder = dbFactory_.newDocumentBuilder(); StringReader reader = new StringReader(s); InputSource inputSource = new InputSource(reader); Document doc_ = dBuilder.parse(inputSource);

y luego me gustaría crear un nuevo elemento en ese nodo justo debajo del nodo raíz con este código:

Node node = doc_.createElement("New_Node"); node.setNodeValue("New_Node_value"); doc_.getDocumentElement().appendChild(node);

El problema es que el nodo se crea y se agrega, pero el valor no se establece. No sé si simplemente no puedo ver el valor cuando miro mi xml si está oculto de alguna manera, pero no creo que sea así porque he intentado obtener el valor del nodo después de la llamada a crear nodo. y devuelve null . Soy nuevo en xml y dom y no sé dónde se almacena el valor del nuevo nodo. ¿Es como un atributo?

<New_Node value="New_Node_value" />

o pone valor aquí:

<New_Node> New_Node_value </New_Node>

Cualquier ayuda sería apreciada grandemente,

Gracias, Josh


Esta es otra solución, en mi caso esta solución funciona porque la función setTextContent () no existe. Estoy trabajando con Google Web Toolkit (GWT) (es un marco de desarrollo Java) y me importó la biblioteca XMLParser para poder usar DOM Parser.

importar com.google.gwt.xml.client.XMLParser;

Documento doc = XMLParser.createDocument ();

Elemento nodo = doc.createElement ("New_Node"); node.appendChild (doc.createTextNode ("valor"));

doc.appendChild (nodo);

El resultado es:

< New_Node > valor < /New_Node >


Para aclarar, cuando cree nodos use:

Attr x = doc.createAttribute(...); Comment x = doc.createComment(...); Element x = doc.createElement(...); // as @dogbane pointed out Text x = doc.createTextNode(...);

En lugar de usar el Nodo genérico para lo que obtiene de cada método. Hará que su código sea más fácil de leer / depurar.

En segundo lugar, los getNodeValue() / setNodeValue() funcionan de manera diferente según el tipo de nodo que tenga. Vea el resumen de la download.oracle.com/javase/6/docs/api/org/w3c/dom/Node.html para referencia. Para un elemento, no puede utilizar estos métodos, aunque para un nodo de texto puede.

Como lo señaló @dogbane, use setTextContent() para el texto entre las etiquetas de este elemento. Tenga en cuenta que esto destruirá cualquier elemento hijo existente.