首页 > 解决方案 > Java XML 解析器使用 xpath 澄清来获取标记值

问题描述

我是使用 xpath 的 xml 解析器的新手,请帮我提取以下 xml 的标记值

<?xml version="1.0" encoding="UTF-8"?>
<sync:ApplicationData xsi:schemaLocation="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:sync="">
    <sync:FileHeader>
            <sync:FileCreationTimeStamp>2018-12-14T04:15:54.54</sync:FileCreationTimeStamp>
    </sync:FileHeader>
    <sync:CorrespondenceInfo>
        <sync:OrganizationName>
            <sync:OrganizationFullName>GLOBAL PATENTS/RANDY W. TUNG, ESQ </sync:OrganizationFullName>
        </sync:OrganizationName>
        </sync:CorrespondenceInfo>

下面是我的java代码来获取OrganizationFullName

            String filePath = "D:\\cut\\2108.xml";
            FileInputStream file = new FileInputStream(new File(filePath));                
            DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = builderFactory.newDocumentBuilder();
            Document xmlDocument = builder.parse(file);
            XPath xPath = XPathFactory.newInstance().newXPath();
            xmlDocument.getDocumentElement().normalize();
            String name;
            name = xPath.compile("//sync:OrganizationFullName").evaluate(xmlDocument);
            System.out.println(name);

在执行得到空结果时,请协助

标签: javaxml-parsing

解决方案


问题在于“同步:”命名空间。要处理这个问题,请使用这个 XPath(完全忽略命名空间):

//*[name()='sync:OrganizationFullName']

反而。然后应该设置名称变量:

"GLOBAL PATENTS/RANDY W. TUNG, ESQ"

推荐阅读