Java XML解析:循环子节点并将字段、值保存到哈希映射
我有一个具有以下结构的XMLJava XML解析:循环子节点并将字段、值保存到哈希映射,java,xml,loops,parsing,nodes,Java,Xml,Loops,Parsing,Nodes,我有一个具有以下结构的XML <message> <header> </header> <body> </body> <end> </end> </message> 每个头节点、主体节点和结束节点都包含我需要提取到单独散列映射中的字段。不使用外部库的最佳方法是什么?最终结果是显示整个消息的两列视图。(字段名、值)您可以使用java Api附带的内容。 例如,
<message>
<header>
</header>
<body>
</body>
<end>
</end>
</message>
每个头节点、主体节点和结束节点都包含我需要提取到单独散列映射中的字段。不使用外部库的最佳方法是什么?最终结果是显示整个消息的两列视图。(字段名、值)您可以使用java Api附带的内容。例如,请参阅 您可以使用java Api附带的和。
例如,请参阅 这取决于数据的结构和hashmap:键是什么,如果值是什么 尽管如此,DOM和XPATH仍能完成这项工作:
String xml= // your xml
DocumentBuilderFactory builderFactory =DocumentBuilderFactory.newInstance();
DocumentBuilder builder = builderFactory.newDocumentBuilder();
Document document = builder.parse(new InputSource(new StringReader(xml)));
String expression="//header"; // Same for body, ...
XPathExpression expr = xpath.compile(expression) ;
NodeList nodes = (NodeList) expr.evaluate(document, XPathConstants.NODESET);
for (int k = 0; k < nodes.getLength(); k++) {
// Do what you want with that
stringxml=//您的xml
DocumentBuilderFactory builderFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder=builderFactory.newDocumentBuilder();
documentdocument=builder.parse(新的InputSource(新的StringReader(xml));
字符串表达式=“//头”;//身体也一样。。。
XPathExpression expr=xpath.compile(表达式);
NodeList节点=(NodeList)expr.evaluate(文档,XPathConstants.NODESET);
对于(int k=0;k
希望它有帮助这取决于您的数据结构和hashmap:什么是键,如果是值怎么办 尽管如此,DOM和XPATH仍能完成这项工作:
String xml= // your xml
DocumentBuilderFactory builderFactory =DocumentBuilderFactory.newInstance();
DocumentBuilder builder = builderFactory.newDocumentBuilder();
Document document = builder.parse(new InputSource(new StringReader(xml)));
String expression="//header"; // Same for body, ...
XPathExpression expr = xpath.compile(expression) ;
NodeList nodes = (NodeList) expr.evaluate(document, XPathConstants.NODESET);
for (int k = 0; k < nodes.getLength(); k++) {
// Do what you want with that
stringxml=//您的xml
DocumentBuilderFactory builderFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder=builderFactory.newDocumentBuilder();
documentdocument=builder.parse(新的InputSource(新的StringReader(xml));
字符串表达式=“//头”;//与正文相同。。。
XPathExpression expr=xpath.compile(表达式);
NodeList节点=(NodeList)expr.evaluate(文档,XPathConstants.NODESET);
对于(int k=0;k
希望它有帮助您可以使用jaxb将其绑定到pojo(我认为您必须实现一个
javax.xml.bind.annotation.adapters.XmlAdapter
并使用@XmlJavaTypeAdapter
注释传递它),或者使用javax.xml.xpath.xpath
您可以使用jaxb将其绑定到pojo(我认为您必须实现一个javax.xml.bind.annotation.adapters.XmlAdapter
并使用@XmlJavaTypeAdapter
注释传递它)或使用javax.xml.xpath.xpath