Tratando de iterar sobre elementos muy similares en un archivo XML. Nota El archivo XML es atributo menos -- java campo con xml campo con dom campo con dom4j camp Relacionados El problema

Trying to iterate over very similar Elements in an XML file. NOTE XML file is attribute less


0
vote

problema

Español

Hollo, tengo una pregunta sobre XML y Java. Tengo un archivo XML extraño sin atributos y solo elementos, estoy tratando de cero en una pila de elementos específicos, y luego iterar sobre todas las pilas de elementos similares.

    <InstrumentData>     <Action>Entire Plot</Action>     <AppStamp>Vectorworks</AppStamp>     <VWVersion>2502</VWVersion>     <VWBuild>523565</VWBuild>     <AutoRot2D>false</AutoRot2D>     <UID_1505_1_1_0_0>   ---- This is the part I care about, there are about 1000+ of these and they all vary slightly after the "UID_"---       <Action>Update</Action>       <TimeStamp>20200427192323</TimeStamp>       <AppStamp>Vectorworks</AppStamp>       <UID>1505.1.1.0.0</UID>     </UID_1505_1_1_0_0>   

Estoy usando DOM4J como el analizador XML y no tengo problemas para escupir todos los datos en los que solo quiero cero en la ruta XML.

Este es el código hasta ahora:

  public class Unmarshal {          public Unmarshal() {         File file = new File("/Users/michaelaboah/Desktop/LIHN 1.11.18 v2020.xml");         SAXReader reader = new SAXReader();         try {             Document doc = reader.read(file);                    Element ele = doc.getRootElement();             Iterator<Element> it = ele.elementIterator();             Iterator<Node> nodeIt = ele.nodeIterator();                          while(it.hasNext()) {                 Element test2 = (Element) it.next();                 List<Element> eleList = ele.elements();                                  for(Element elementsIt : eleList) {                     System.out.println(elementsIt.selectSingleNode("/SLData/InstrumentData").getStringValue());                         //This spits out everything under the Instrument Data branch                         //All of that data is very large                                          System.out.println(elementsIt.selectSingleNode("/SLData/InstrumentData/UID_1505_1_1_0_0").getStringValue());                         //This spits out everything under the UID branch                 }             }                              } catch (DocumentException e) {             // TODO Auto-generated catch block             e.printStackTrace();         }     }   

Además, sé que hay algunos tipos de datos no utilizados y variables hubo muchas pruebas

Original en ingles

Hullo, I have a question about xml and java. I have a weird XML file with no attributes and only Elements, im trying to zero in on a specific Element Stack, and then iterate over all of the similar element stacks.

  <InstrumentData>     <Action>Entire Plot</Action>     <AppStamp>Vectorworks</AppStamp>     <VWVersion>2502</VWVersion>     <VWBuild>523565</VWBuild>     <AutoRot2D>false</AutoRot2D>     <UID_1505_1_1_0_0>   ---- This is the part I care about, there are about 1000+ of these and they all vary slightly after the "UID_"---       <Action>Update</Action>       <TimeStamp>20200427192323</TimeStamp>       <AppStamp>Vectorworks</AppStamp>       <UID>1505.1.1.0.0</UID>     </UID_1505_1_1_0_0> 

I am using dom4j as the xml parser and I dont have any issues spitting out all of the data I just want to zero in on the XML path.

This is the code so far:

public class Unmarshal {          public Unmarshal() {         File file = new File("/Users/michaelaboah/Desktop/LIHN 1.11.18 v2020.xml");         SAXReader reader = new SAXReader();         try {             Document doc = reader.read(file);                    Element ele = doc.getRootElement();             Iterator<Element> it = ele.elementIterator();             Iterator<Node> nodeIt = ele.nodeIterator();                          while(it.hasNext()) {                 Element test2 = (Element) it.next();                 List<Element> eleList = ele.elements();                                  for(Element elementsIt : eleList) {                     System.out.println(elementsIt.selectSingleNode("/SLData/InstrumentData").getStringValue());                         //This spits out everything under the Instrument Data branch                         //All of that data is very large                                          System.out.println(elementsIt.selectSingleNode("/SLData/InstrumentData/UID_1505_1_1_0_0").getStringValue());                         //This spits out everything under the UID branch                 }             }                              } catch (DocumentException e) {             // TODO Auto-generated catch block             e.printStackTrace();         }     } 

Also, I know there are some unused data types and variables there was a lot of testing

           

Lista de respuestas

0
 
vote

Creo que tu respuesta es:

  elementsIt.selectSingleNode("/SLData/InstrumentData/*[starts-with(local-name(), 'UID_')]").getStringValue()   

He usado esta publicación para encontrar este Xpath y funciona con las pocas líneas de XML que le dio.

 

I think your answer is:

elementsIt.selectSingleNode("/SLData/InstrumentData/*[starts-with(local-name(), 'UID_')]").getStringValue() 

I used this post to find this XPath and it works with the few xml lines you gave.

 
 
     
     

Relacionados problema

1  ¿Cómo encuentro todos los elementos XML de un tipo específico usando XPATH?  ( How do i find all xml elements of a specific type using xpath ) 
Tengo un XSD que define un tipo complejo (Diga 'Footype'), y varias instancias nombradas de este tipo se dispersaron a lo largo de la misma XSD, como: <seq...

4  Extraer datos de ganglios infantiles de nodo dado  ( Extracting child nodes data from given node ) 
Quiero usar DOM4J para analizar el archivo XML en Java. Tengo este XML como ejemplo: <request method="POST" url="/devices/test/planner" body="*"> <resp...

0  Necesito ayuda para manejar documentos usando DOM4J  ( Need help handling documents using dom4j ) 
import java.util.Iterator; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.XMLWriter; public cla...

1  Agregar un espacio de nombres al nodo de raíz está causando que agregue el espacio de nombres para agregar los nodos secundarios también  ( Adding a namespace to root node is causing it to add the namespace to add the ch ) 
launch_screen.xml6 Esto está haciendo que los XMLN se agreguen a los nodos del encabezado y del cuerpo también. ¿Cómo solo tengo los XMLN agregados al nod...

276  Xpath contiene (texto (), 'algo de cadena') no funciona cuando se usa con un nodo con más de un Subnodo de texto  ( Xpath containstext some string doesnt work when used with node with more ) 
Tengo un pequeño problema con Xpath contiene con DOM4J ... Digamos que mi XML es <Home> <Addr> <Street>ABC</Street> <Number>5</Number...

0  Cómo agregar un nuevo atributo en la etiqueta de encabezado XML en DOM4J  ( How add a new attribute in xml header tag in dom4j ) 
Cómo agregar un nuevo atributo en la etiqueta de encabezado XML como <?xml version="1.0" encoding="UTF-8" **text1="value"**?> Necesito agregar un nuevo...

2  ¿Está agregando elementos entre elementos con Jython y DOM4J posible?  ( Is adding elements between elements with jython and dom4j possible ) 
solo jugando con dom4j, excelente. Fui un desarrollador PHP durante un año y medio, acaba de recibir un nuevo trabajo y comenzó a jugar con Jython, ahora teng...

0  Struts 1.1 + Hibernate 3.2 Integración  ( Struts 1 1 hibernate 3 2 integration ) 
Estoy tratando de integrar Hibernate en una aplicación Struts + EJB 2.0 existente. Tuve que escribir un complemento Struts-Hibernate para la creación de sesió...

0  No se puede serializar org.dom4j.document usando la API de JBoss Marshalling  ( Cant serialize org dom4j document using jboss marshalling api ) 
Estoy golpeando un problema al tratar de serializar un objeto Java con org.dom4j.document como un atributo usando jboss marshalling api . Estoy usando JD...

0  DOM4 1.6.1J: Xpath que devuelve el valor de tipo no nodo posible?  ( Dom4 1 6 1j xpath that returns non node type value possible ) 
e.g. Quiero devolver el nombre de un nodo, es decir, una cadena, así / mxml / operaciones / comercio / comercio / * [1] / nombre local () Sin embargo, cua...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos