我从客户端收到的 XML 字符串为
<?xml version="1.0" encoding="UTF-8"?>
<Esp:Interface Version="1.0" xmlns:Esp="http://***Confidential****/">
<Esp:Transaction ActionCode="APPROVE" CardNumber="474849********28" ExpiryDate="0824"
ResponseCode="00" TerminalId="03563001" Track2="474849********28=08241261234"
TransactionAmount="300" TransactionId="00051" Type="PURCHASE" LocalDate="0823"
LocalTime="152006" PosOperatorId="1234" AuthorizationNumber="123456" MessageType="REFERAL">
</Esp:Transaction>
</Esp:Interface>
我想提取每个字符串
ActionCode="APPROVE"
CardNumber="474849********28"
ExpiryDate="0824"
ResponseCode="00"
TerminalId="03563001"
Track2="474849********28=08241261234"
TransactionAmount="300"
TransactionId="00051"
Type="PURCHASE"
LocalDate="0823"
LocalTime="152006"
PosOperatorId="1234"
AuthorizationNumber="123456"
MessageType="REFERAL"
我使用 XPath
读取 XML 字符串,但它给了我错误
InputSource source = new InputSource(new StringReader(sXMLData));//sXMLData Contains XML String
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = db.parse(source);
XPathFactory xpathFactory = XPathFactory.newInstance();
XPath xpath = xpathFactory.newXPath();
String msg = xpath.evaluate("/Esp:Interface/Esp:Transaction", document);
System.out.println("msg= " + msg);
错误:
msg : /* Coming Blank */
我引用了这两个链接,但没有得到像 Parse XML Simple String using Java XPath 和 Simplest way to query XML in Java 那样多的帮助
我如何从 XML 中获取这些单独的字符串...通过使用 XML
中的构建或旧的 substring
方法(效率低下)
最佳答案
您的 XPath 错误。您向 XPath 询问该元素的内容,该元素确实是空的。为了获取属性,您需要单独获取它们:
/Esp:Interface/Esp:Transaction/@ActionCode
或者您可以一次性获取所有内容
/Esp:Interface/Esp:Transaction/@*
但这将为您提供文档中的一组节点,每个节点都有一个名称和一个值,您必须在代码中提取它们。据我所知,无法仅获取文档中出现的属性字符串。
关于java - java从xml中提取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18444485/