java - 如何使用 Xpath 解析复杂的 XML

标签 java xml xpath saxparser

我有一个 XML 如下:

<Service xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xmlns="someurl" xsi:schemaLocation="someurl Sample.xsd">
    <RequestControl>
        <requestID>100129</requestID>
        <Control>
            <requesterName>Admin</requesterName>
            <requesterLanguage>100</requesterLanguage>
        </Control>
    </RequestControl>
    <Inquiry>
        <InquiryType>getParty</InquiryType>
        <InquiryParam>
            <Param name="PartyId">854850029276139020</Param>
        </InquiryParam>
    </Inquiry>
</Service>

我想使用 XPath XML 解析器从标记中提取值“getParty”。我使用以下作为我的表达:

expression = xPath.compile("/Service/Inquiry/InquiryType/text()");

如何为上述内容编写准确且完整的java代码?我只想提取 <InquiryType>getParty</InquiryType> 的值.

最佳答案

尝试你的代码,看起来对我来说工作得很好。这是我所做的

public static void main(String ... args) throws ParserConfigurationException, IOException, SAXException, XPathExpressionException {
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = factory.newDocumentBuilder();
    Document doc = builder.parse(System.getProperty("user.dir") + "/src/main/resources/test.xml");
    XPathFactory xPathfactory = XPathFactory.newInstance();
    XPath xpath = xPathfactory.newXPath();
    XPathExpression expression = xpath.compile("/Service/Inquiry/InquiryType/text()");
    NodeList xpathNodeList = (NodeList) expression.evaluate(doc, XPathConstants.NODESET);
    System.out.println("InquiryType is : " +xpathNodeList.item(0));
}

test.xml 包含您正在使用的 xml

<Service xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns="someurl" xsi:schemaLocation="someurl Sample.xsd">
<RequestControl>
    <requestID>100129</requestID>
    <Control>
        <requesterName>Admin</requesterName>
        <requesterLanguage>100</requesterLanguage>
    </Control>
</RequestControl>
<Inquiry>
    <InquiryType>getParty</InquiryType>
    <InquiryParam>
        <Param name="PartyId">854850029276139020</Param>
    </InquiryParam>
</Inquiry>
</Service>

关于java - 如何使用 Xpath 解析复杂的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45535604/

相关文章:

java.io.IOException : The issuer can not be found in the trusted CA list

java - Camel 交易定界

android - wrap_content 比实际的 imageview 大

java - 如何在 Javafx 中为 XML 文件创建常量变量

java - 切换到第三个选项卡后 Tabhost 的内容被重置

html - 如何在 Selenium WebDriver 中获取单个文本节点

java - 获取全局所有重要交易所的数值

java - 我如何在java中进行回文?

xml - 用于选择仅包含文本的元素的 XPath

xslt - 节点集测试不一致?