我正在用java解析一个xml文档。我试图从一个特殊的节点获取完整的文本。
这是我的xml文档
<xml><archi><test>asd</test></archi><brchi val="a"><asd>Hello</asd><bsd>World</bsd></brchi></xml>
我正在分析这里的文档:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(new URL(url).openStream());
doc.getDocumentElement().normalize();
Element root = doc.getDocumentElement();
// loop through each item
NodeList nList = doc.getElementsByTagName("brchi");
for (int temp = 0; temp < nList.getLength(); temp++) {
Node nNode = nList.item(temp); ...
这很管用。但现在我喜欢从我解析的元素中获得完整的文本。这里是"brchi"。这应该是结果:
<brchi val="a"><asd>Hello</asd><bsd>World</bsd></brchi>
但是,如何获取文本而不是解析元素呢?
感谢
可能有一种更干净的方法,但我所做的是给出XML:
<book ISBN="0123456001">
<title>Java For Dummies</title>
<author>Tan Ah Teck</author>
<category>Programming</category>
<year>2009</year>
<edition>7</edition>
<price>19.99</price>
</book>
这是我用来提取标题文本的代码
NodeList list = doc.getElementsByTagName("title");
Element element = (Element)list.item(0)
System.out.println("tTitle:t"
+ element.getChildNodes().item(0).getNodeValue());`
试试这个:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(new File("data.xml"));
NodeList list = doc.getElementsByTagName("brchi");
Node node = list.item(0);
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
DOMSource source = new DOMSource(node);
StreamResult result = new StreamResult(System.out);
transformer.transform(source, result);
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TransformerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}