java - 用 Java 解析 XML

标签 java xml

我有一个响应结构,我想用 Java 解析它。谁能帮我解决这个问题吗?

    <message_response xmlns="">
      <action name="GETCIL">
        <param name="bookingNote" value="" require="" read-only=""><![CDATA[bookingNote]]></param>
        <param name="CarrierLinkType" value="" require="" read-only=""><![CDATA[True]]></param>
        <param name="Carrier" value="" require="" read-only=""><![CDATA[SK185]]></param>

 <param_list name="ViaAddressList" id="GETCIL">
      <value>
        <param_list name="ViaAddressId" id="ViaAddressList">
          <value><![CDATA[877765050_5511]]></value>
        </param_list>
        <param_list name="AddressDate" id="ViaAddressList">
          <value><![CDATA[10/12/2010]]></value>
        </param_list>
        <param_list name="AddressTime" id="ViaAddressList">
          <value><![CDATA[12:12]]></value>
        </param_list>
      </value>
    </param_list>


</action>
    </message_response>

最佳答案

从 XML 文档中提取特定值(而不是使用 SAX 解析整个文档)的最简单方法是使用 XPath,如下所示:

//1. load the document into memory.
DocumentBuilder documentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();

//2. Create an XPath.
XPath xpath = XPathFactory.newInstance().newXPath();

//3. Evaluate the xpath expression.
String actionName = xpath.evaluate("/message_response/action/@name", documentBuilder.parse(xmlFile));

除了重载 XPath.evaluate 方法以允许返回节点和节点列表之外,没有更多内容(请参阅 javax.xml.xpath.XPathConstants code> 类型)。

那么您只需要阅读 xpath 语法 (http://www.w3schools.com/xpath/xpath_syntax.asp)。

关于java - 用 Java 解析 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5787893/

相关文章:

java - JSON 到通用空间 Java 对象

xml - 带有动态标题的网页

c++ - Microsoft XMLLite 的 XML 绑定(bind)

javascript - 对于具有样式表处理指令的文档,XAdES 验证失败,引用 URI 为 =""

java - 尝试获取 FactorySession 时出现 failed.org.hibernate.MappingException

java - Hibernate:找不到查询类的持久类

java - 实现特定接口(interface)的所有类的对象的集合

java - JSON 路径 "$.name"处没有值,异常 : json can not be null or empty, 使用 Mockmvc 和 Spring-boot

java - Log4j将json数组写入磁盘

javascript - 使用 Translate 函数删除 xml 中的换行符,但如何忽略某些标签?