如何从xml文档中提取完整的xml元素
问题描述:
所有关于解析xml元素/节点的例子,我发现,都是关于如何从xml文档中提取节点属性/值等。如何从xml文档中提取完整的xml元素
我感兴趣的是如何从开始标记提取整个元素到结束标记。 例子: 从XML文档
<?xml version="1.0"?>
<Employees>
<Employee emplid="1111" type="admin"/>
</Employees>
我会得到完整的元素
<Employee emplid="1111" type="admin"/>
挽救它在可变
在此先感谢
答
现在这是最好的解决方案。
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.StringWriter;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
...
//xml document
String xml = "<?xml version=\"1.0\"?><Employees><Employee emplid=\"1111\" type=\"admin\"/></Employees>";
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder parser = factory.newDocumentBuilder();
Document document = parser.parse(new ByteArrayInputStream(xml.getBytes()));
//getting the target element
NodeList list=document.getElementsByTagName("Employee");
Node node=list.item(0);
//writing the element in the string variable
TransformerFactory transFactory = TransformerFactory.newInstance();
Transformer transformer = transFactory.newTransformer();
StringWriter buffer = new StringWriter();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
transformer.transform(new DOMSource(node), new StreamResult(buffer));
String str = buffer.toString();
System.out.println(str);
...
灵感来自this thread
也许你应该看看[这里](http://stackoverflow.com/questions/9886531/how-to-parse-xml-with-jsoup),使用[Jsoup](http://jsoup.org/)。 –
是的,它的工作原理非常完美,但有没有什么可以让它无需外部库?非常感谢 – FUGAZI
我注意到方法doc.select()(在http://stackoverflow.com/questions/9886531/how-to-parse-xml-with-jsoup)不是关键敏感。如果xml元素的属性名称有一些大写字符,返回的字符串有小写字母:(我对此非常抱歉。 – FUGAZI