1

我发现的所有关于解析 xml 元素/节点的示例都是关于如何从 xml 文档中提取节点属性/值等。

我对如何从开始标签到结束标签中提取整个元素感兴趣。示例:来自 xml 文档

<?xml version="1.0"?>
    <Employees>
        <Employee emplid="1111" type="admin"/>
    </Employees>

我会得到完整的元素

<Employee emplid="1111" type="admin"/>

将其保存在字符串变量中

提前致谢

4

2 回答 2

0

您可以自己进行解析,也可以使用 Android 的 XML 解析器。显示了如何使用后者。

如果您使用 Android 的解析器,您可能必须完全解析它,然后<Employee emplid="1111" type="admin"/>手动构造字符串。

于 2013-10-27T23:12:32.520 回答
0

目前这是最好的解决方案。

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);

...

受此线程启发

于 2013-10-28T02:03:01.380 回答