如何将子元素从XML提取到Java中的字符串?

如何将子元素从XML提取到Java中的字符串?,第1张

如何将子元素从XML提取到Java中的字符串

没错,使用标准XML API并不是一种好方法-这是一个示例(可能是bug缠身;它可以运行,但是我很久以前就写了)。

import javax.xml.*;import javax.xml.parsers.*;import javax.xml.transform.*;import javax.xml.transform.dom.*;import javax.xml.transform.stream.*;import org.w3c.dom.*;import java.io.*;public class Proc{    public static void main(String[] args) throws Exception    {        //Parse the input document        documentBuilderFactory factory = documentBuilderFactory.newInstance();        documentBuilder builder = factory.newdocumentBuilder();        document doc = builder.parse(new File("in.xml"));        //Set up the transformer to write the output string        TransformerFactory tFactory = TransformerFactory.newInstance();        Transformer transformer = tFactory.newTransformer();        transformer.setOutputProperty("indent", "yes");        StringWriter sw = new StringWriter();        StreamResult result = new StreamResult(sw);        //Find the first child node - this could be done with xpath as well        NodeList nl = doc.getdocumentElement().getChildNodes();        DOMSource source = null;        for(int x = 0;x < nl.getLength();x++)        { Node e = nl.item(x); if(e instanceof Element) {     source = new DOMSource(e);     break; }        }        //Do the transformation and output        transformer.transform(source, result);        System.out.println(sw.toString());    }}

似乎您可以仅使用doc.getdocumentElement()。getFirstChild()来获得第一个孩子,但是问题是如果根元素和子元素之间存在任何空格,则会在树,您将获得该节点,而不是实际的元素节点。该程序的输出为:

D:hometmpxml>java Proc<?xml version="1.0" encoding="UTF-8"?><element1>        <child attr1="blah"><child2>blahblah</child2>       </child>   </element1>

我认为您可以在不需要的情况下取消xml版本字符串,但是我不确定。如果可能的话,我可能会尝试使用第三方XML库。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4936437.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-13
下一篇 2022-11-13

发表评论

登录后才能评论

评论列表(0条)

保存