Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java XML解析:循环子节点并将字段、值保存到哈希映射_Java_Xml_Loops_Parsing_Nodes - Fatal编程技术网

Java XML解析:循环子节点并将字段、值保存到哈希映射

Java XML解析:循环子节点并将字段、值保存到哈希映射,java,xml,loops,parsing,nodes,Java,Xml,Loops,Parsing,Nodes,我有一个具有以下结构的XML <message> <header> </header> <body> </body> <end> </end> </message> 每个头节点、主体节点和结束节点都包含我需要提取到单独散列映射中的字段。不使用外部库的最佳方法是什么?最终结果是显示整个消息的两列视图。(字段名、值)您可以使用java Api附带的内容。 例如,

我有一个具有以下结构的XML

<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