我通过假装客户端从第三方API获得org.w3c.dom.Document. xml响应,这是我在字符串中收集的,然后尝试将字符串转换为。
我已经搜索了字符串文档转换代码,并在下面的链接。
问题是我的转换逻辑不工作,Document = null。
public static void main(String[] args) {
final String xmlStr = "<Emp id=\"1\"><name>Pankaj</name><age>25</age>\n"+
"<role>Developer</role><gen>Male</gen></Emp>";
Document doc = convertStringToXMLDocument(xmlStr);
}
private static Document convertStringToXMLDocument(String xmlString)
{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
try
{
builder = factory.newDocumentBuilder();
Document doc = builder.parse(new InputSource(new StringReader(xmlString)));
return doc;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
我尝试过调试builder.parse()的代码,但是找不到文档转换为null的原因。
Output: doc: "[#document : null]"
发布于 2021-06-21 06:54:23
您的Document doc
不是空的。"#document : null“仅是来自xerces
NodeImpl.toString
的输出。它的意思是元素名称或元素类型:元素值。所以#document : null表示文档元素:无直接值。这是正确的,因为只有文本节点有直接值。
您将能够遍历Document doc
并获得所有子节点(元素节点和文本节点),如下所示:
import java.io.StringReader;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import org.xml.sax.InputSource;
public class DocumentBuilderTest {
public static void main(String[] args) {
final String xmlStr = "<Emp id=\"1\"><name>Pankaj</name><age>25</age>\n"+
"<role>Developer</role><gen>Male</gen></Emp>";
Document doc = convertStringToXMLDocument(xmlStr);
printAllChildNodes(doc);
}
public static void printAllChildNodes(Node node) {
System.out.println(node);
NodeList nodeList = node.getChildNodes();
for (int i = 0; i < nodeList.getLength(); i++) {
Node currentNode = nodeList.item(i);
printAllChildNodes(currentNode);
}
}
private static Document convertStringToXMLDocument(String xmlString) {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
try {
builder = factory.newDocumentBuilder();
Document doc = builder.parse(new InputSource(new StringReader(xmlString)));
return doc;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
这些指纹:
[#document: null]
[Emp: null]
[name: null]
[#text: Pankaj]
[age: null]
[#text: 25]
[#text:
]
[role: null]
[#text: Developer]
[gen: null]
[#text: Male]
https://stackoverflow.com/questions/68062679
复制相似问题