【发布时间】:2017-09-14 19:28:28
【问题描述】:
我尝试理解 stackoverflow 中的所有其他答案。但我无法将这些答案与我的问题联系起来。
当我调用网络服务时,我得到response。我通过response.getData();(The XML of the data table containing the results.) (return type String) 获得架构。我们不知道我们在那个 XML 中得到了什么数据。
我需要使用第 3 方解析器,因此当我将上述字符串提供给该解析器中的一个方法时,它应该返回该 XML 中的所有元素,然后我可以打印所需的元素。
我不想自己开始解析 XML。有没有办法我可以做到这一点? (它甚至有任何意义吗?)。对不起,如果我完全错了。 (使用Axis2/eclipse)(已编辑)
编辑:添加我已经尝试过的代码。
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
NodeList nodeList = null;
try {
String xml = res2.getResult().getRawData();
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = db.parse(new ByteArrayInputStream(xml.getBytes()));
nodeList = document.getElementsByTagName("PhoneNumber");
NamedNodeMap attrib = document.getAttributes();
for (int i = 0; i < attrib.getLength(); i++) {
String nodeName = attrib.item(i).getNodeName();
//nodeName
String nodeValue = attrib.item(i).getNodeValue();
}
但我不确定电话号码是否带有该标签或其他名称。我们也不知道我们有多少标签。
谢谢,使用 SyamS 的代码,我可以从 xml 打印所有节点和相应的值。现在我想将它存储到一个哈希图中,键为节点名,节点值在列表中。
示例 XML:
<Docs>
<Doc>
<Id>12</Id>
<Phone>1234</Phone>
</Doc>
<Doc>
<Id>147</Id>
<Phone>12345</Phone>
<Locked>false</Locked>
<BID>2</BID>
<DocId>8</DocId>
<Date>2014-02-04T12:18:50.063-07:00</Date>
<Urgent>false</Urgent>
</Doc>
</Docs>
【问题讨论】:
-
为什么要解析 XML Schema ?我假设您要处理 XML 中的响应,并且“必需元素”是此 XML 数据文件中的元素? (XML 模式定义 XML 数据文件的结构。)
-
您好,请查看我的问题中的编辑。忘记架构。我得到了 DataTable 的 XML。现在我需要从那个 xml 中获取数据(比如用户名、id、ssn、电子邮件,我们不知道我们在那个 xml 中得到了什么其他数据)。现在我想要解析它,这样我就可以获得他们发送的所有结果并使用所需的结果。
-
@Jenny 我正在考虑可以编写的类来处理这个问题。您的 XML 存储在什么对象中?我想知道如何将 XML 传递给方法参数或类构造函数。
-
我会将传入的数据(作为字符串)存储到 file.xml 中。这样我就可以将此 xml 文件提供给解析和打印所有属性及其值的解析器。 (我假设这就是它的工作原理。)