diff --git a/docs/misc2/123.md b/docs/misc2/123.md index bb8a878817b16724fe90ae93a920aa8e1deab252..370211ffd2b7493bc1aa206518c8d2000ba2c63a 100644 --- a/docs/misc2/123.md +++ b/docs/misc2/123.md @@ -34,7 +34,7 @@ Robert C. Martin 在他的书《 *敏捷软件开发:原理,模式和实践 我们可以使用 [TDD](https://en.wikipedia.org/wiki/Test-driven_development) 方法来解决代码中的这些问题。 修正错误后,您必须确保没有其他测试会因副作用而失败。 -* Another permissive exception is that any change to existing code is allowed as long as it does not also require a change to any client of that code. This allows the upgrade of the module versions with new language features. For example, [Spring 5](https://howtodoinjava.com/spring-5-tutorial/) supports and uses [Java 8 lambda](https://howtodoinjava.com/java-8-tutorial/) syntax but to use it, we do not require to change our client application code. +* Another permissive exception is that any change to existing code is allowed as long as it does not also require a change to any client of that code. This allows the upgrade of the module versions with new language features. For example, [Spring 5](https://howtodoinjava.com/spring-5-tutorial/) supports and uses [Java8 lambda](https://howtodoinjava.com/java-8-tutorial/) syntax but to use it, we do not require to change our client application code. 一个模块,其中的类是松散耦合的,在不强迫其他类更改的情况下更改了类,这就是鼓励松散耦合的原因。 如果您允许对现有代码进行修改而不会强制对客户端进行进一步更改,则保持松散的耦合将限制 OCP 的影响。 diff --git a/docs/misc2/127.md b/docs/misc2/127.md index f58d5eb3fd8369f1e3ad2648f0fd5ff634fcb45d..b4c7a33d8a101f23aa7a7815708f0d5c469ed06f 100644 --- a/docs/misc2/127.md +++ b/docs/misc2/127.md @@ -74,4 +74,4 @@ 学习愉快! -> 参考:本文引用并使用了一些示例,例如 *Andy Hunt 的[“使用 JUnit 进行 Java 8 中的实用单元测试”](https://pragprog.com/book/utj2/pragmatic-unit-testing-in-java-8-with-junit) 中给出的示例; 杰夫·兰格 戴夫·托马斯*。 \ No newline at end of file +> 参考:本文引用并使用了一些示例,例如 *Andy Hunt 的[“使用 JUnit 进行 Java8 中的实用单元测试”](https://pragprog.com/book/utj2/pragmatic-unit-testing-in-java-8-with-junit) 中给出的示例; 杰夫·兰格 戴夫·托马斯*。 \ No newline at end of file diff --git a/docs/misc2/164.md b/docs/misc2/164.md index 3c6f7437a033b0ce14eb85e4623227c6f380db04..27ce802268029ba448e348525f637e8f0c4db350 100644 --- a/docs/misc2/164.md +++ b/docs/misc2/164.md @@ -2,7 +2,7 @@ > 原文: [https://howtodoinjava.com/library/rxjava-tutorial/](https://howtodoinjava.com/library/rxjava-tutorial/) -[RxJava 2.0](http://reactivex.io/) 是 Java 的开源扩展,用于 NetFlix 的异步编程。 如 [java 8 lambda 表达式](//howtodoinjava.com/java8/complete-lambda-expressions-tutorial-in-java/)中所示,它与函数式编程更加接近。 反应代码的基本构建块是*可观察对象*和*订阅者*。 `Observable`发出项目; `Subscriber`消耗这些项目。 +[RxJava 2.0](http://reactivex.io/) 是 Java 的开源扩展,用于 NetFlix 的异步编程。 如 [Java8 lambda 表达式](//howtodoinjava.com/java8/complete-lambda-expressions-tutorial-in-java/)中所示,它与函数式编程更加接近。 反应代码的基本构建块是*可观察对象*和*订阅者*。 `Observable`发出项目; `Subscriber`消耗这些项目。 RxJava 看起来也像[观察者设计模式](https://howtodoinjava.com/design-patterns/behavioral/observer-design-pattern/),但有所不同 – 可观察对象通常不会开始发布项目,除非有人明确订阅它们。 diff --git a/docs/misc2/203.md b/docs/misc2/203.md index 56e971a32a87cfa7680c130883b2e744c0669e21..5d064a3fd1f6b4261d0c53ccb547a3f26e47da2e 100644 --- a/docs/misc2/203.md +++ b/docs/misc2/203.md @@ -33,9 +33,9 @@ public static long factorialRecursive( long n ) ``` -## 3)使用流计算阶乘[Java 8] +## 3)使用流计算阶乘[Java8] -Java 8 支持流,您可以使用流以最有效的方式计算阶乘,如下所示。 +Java8 支持流,您可以使用流以最有效的方式计算阶乘,如下所示。 ```java public static long factorialStreams( long n ) diff --git a/docs/misc2/204.md b/docs/misc2/204.md index 260e055e85921b2b4167420c3e39a879ae3244b9..e39bb840bf07bbee5461f88a52d4098e4867d7cf 100644 --- a/docs/misc2/204.md +++ b/docs/misc2/204.md @@ -8,9 +8,9 @@ 让我们学习编写一个程序来用 Java 模拟这个游戏。 -## 在 Java 8 中解决 FizzBu​​zz +## 在 Java8 中解决 FizzBu​​zz -使用最新的 Java 版本 8,让我们使用 Java 8 构造设计解决方案。 +使用最新的 Java 版本 8,让我们使用 Java8 构造设计解决方案。 ```java IntStream.rangeClosed(1, 100) @@ -19,9 +19,9 @@ IntStream.rangeClosed(1, 100) ``` -## 在 Java 8 之前解决 FizzBu​​zz +## 在 Java8 之前解决 FizzBu​​zz -如果您仍未使用 Java 8,则此 Fizzbuzz 解决方案将使用基本的 for 循环并遍历数字范围并确定要打印的内容。 +如果您仍未使用 Java8,则此 Fizzbuzz 解决方案将使用基本的 for 循环并遍历数字范围并确定要打印的内容。 ```java for (int i = 1; i <= num; i++) diff --git a/docs/misc2/205.md b/docs/misc2/205.md index 116e8b11aa4ee5e4bb4bddf0804e8aa747d3dc34..b18dec125d4b3e013acfe2cb17385d0bcdab0dde 100644 --- a/docs/misc2/205.md +++ b/docs/misc2/205.md @@ -45,9 +45,9 @@ Output: ``` -## 查找电话号码的解决方案 – Java 8 +## 查找电话号码的解决方案 – Java8 -上面的代码虽然很简单,但是可以使用新语言功能(例如 [Java 8](https://howtodoinjava.com/java-8-tutorial/) 中的 [lambda](https://howtodoinjava.com/java8/complete-lambda-expressions-tutorial-in-java/) )减少许多行。 让我们看看如何? +上面的代码虽然很简单,但是可以使用新语言功能(例如 [Java8](https://howtodoinjava.com/java-8-tutorial/) 中的 [lambda](https://howtodoinjava.com/java8/complete-lambda-expressions-tutorial-in-java/) )减少许多行。 让我们看看如何? ```java import java.util.Arrays; diff --git a/docs/misc2/208.md b/docs/misc2/208.md index 37d698d31ae59f18980f8558174167611f5444d0..77d409b6e9edab4291bba4004f60de6abd1e73ad 100644 --- a/docs/misc2/208.md +++ b/docs/misc2/208.md @@ -92,9 +92,9 @@ HashMap 不是线程安全的。 我们可以在并发应用中使用 **HashTabl #### 1.10 [接口和抽象类之间的区别?](//howtodoinjava.com/object-oriented/exploring-interfaces-and-abstract-classes-in-java/ "Exploring interfaces and abstract classes in java") -自从 Java 语言诞生以来,在**抽象类**和**接口**中就有非常清晰的分离。 但是自从 Java 8 发行到市场以来,发生了很多变化。 它的核心概念之一是功能接口。 +自从 Java 语言诞生以来,在**抽象类**和**接口**中就有非常清晰的分离。 但是自从 Java8 发行到市场以来,发生了很多变化。 它的核心概念之一是功能接口。 -[**功能接口**](https://howtodoinjava.com/java8/functional-interface-tutorial/) 完全改变了我们查看 Java 语言的两个基本构建块的方式。 如果您的简历说您使用 Java 8,就不能跳过这个问题。在链接的教程中,我将向您展示正确的场景,这将帮助您解决一些复杂的面试问题和案例研究。 +[**功能接口**](https://howtodoinjava.com/java8/functional-interface-tutorial/) 完全改变了我们查看 Java 语言的两个基本构建块的方式。 如果您的简历说您使用 Java8,就不能跳过这个问题。在链接的教程中,我将向您展示正确的场景,这将帮助您解决一些复杂的面试问题和案例研究。 #### 1.11 [枚举面试问题](//howtodoinjava.com/java-5/guide-for-understanding-enum-in-java/) @@ -196,7 +196,7 @@ Java 中的对象**克隆**并非易事。 我自己花了很长时间了解 Jav #### 2.5 [什么是 Fork / Join 框架?](https://howtodoinjava.com/java7/forkjoin-framework-tutorial-forkjoinpool-example/) -自 Java 8 发行以来,这不是一个新概念,但现在已以多种方式使用。Fork-Join 将手头的任务分解为多个微型任务,直到该微型任务足够简单,无需进一步分解即可解决。 这就像分而治之的算法。 在此框架中要注意的一个重要概念是,理想情况下,没有工作线程处于空闲状态。 他们实现了一种偷窃工作的算法,即闲置的工人从忙碌的工人那里窃取了工作。 +自 Java8 发行以来,这不是一个新概念,但现在已以多种方式使用。Fork-Join 将手头的任务分解为多个微型任务,直到该微型任务足够简单,无需进一步分解即可解决。 这就像分而治之的算法。 在此框架中要注意的一个重要概念是,理想情况下,没有工作线程处于空闲状态。 他们实现了一种偷窃工作的算法,即闲置的工人从忙碌的工人那里窃取了工作。 学习这个精巧而高效的算法,以更好地准备下一次面试。 diff --git a/docs/misc2/211.md b/docs/misc2/211.md index 0282ee923072804d28a1b75f7bdc9e74bdbee276..53d89eacb43c03c52abccfbebba6cb1e065ec95d 100644 --- a/docs/misc2/211.md +++ b/docs/misc2/211.md @@ -156,7 +156,7 @@ final int hash; * 默认情况下,Java 接口的成员是公共的。 Java 抽象类可以具有类成员通常的风格,例如`private`或`abstract`等。 * Java 接口应使用关键字“ **实现**”实现; Java 抽象类应使用关键字“ **extended** ”来扩展。 * Java 类可以实现多个接口,但只能扩展一个抽象类。 -* 接口是~~的绝对抽象,~~不能实例化; Java 抽象类也无法实例化,但是可以在存在 main()的情况下调用。 从 Java 8 开始,您可以在接口 中定义 [**默认方法。**](//howtodoinjava.com/java8/default-methods-in-java-8/) +* 接口是~~的绝对抽象,~~不能实例化; Java 抽象类也无法实例化,但是可以在存在 main()的情况下调用。 从 Java8 开始,您可以在接口 中定义 [**默认方法。**](//howtodoinjava.com/java8/default-methods-in-java-8/) * 抽象类比接口要快一些,因为接口涉及在 Java 中调用任何重写方法之前进行的搜索。 在大多数情况下,这并不是显着的差异,但是如果您正在编写时间紧迫的应用,那么您可能不想无所事事。 ## **何时覆盖 hashCode()和 equals()?** diff --git a/docs/misc2/212.md b/docs/misc2/212.md index ffb5f6d81a20ce0d7347876a286ab016c6aecd2e..e66c7c4c709396afd7ecd2aa9c163583d30ee579 100644 --- a/docs/misc2/212.md +++ b/docs/misc2/212.md @@ -102,7 +102,7 @@ Wrapping data and methods within classes in combination with implementation hidi 接口和抽象类之间的基本区别可以算作如下: -* ~~接口不能有任何方法,而抽象类可以~~ [在 [java 8 默认方法](//howtodoinjava.com/java8/default-methods-in-java-8/)之后不正确) +* ~~接口不能有任何方法,而抽象类可以~~ [在 [Java8 默认方法](//howtodoinjava.com/java8/default-methods-in-java-8/)之后不正确) * 一个类可以实现许多接口,但只能有一个超类(是否抽象) * 接口不属于类层次结构。 不相关的类可以实现相同的接口 diff --git a/docs/misc2/218.md b/docs/misc2/218.md index e59cf9e11fd9186782ab6bae53c3cffa71b2d08f..400ce4d1884502759431336f54234d90f89cc8bd 100644 --- a/docs/misc2/218.md +++ b/docs/misc2/218.md @@ -69,7 +69,7 @@ Java 9 中的一些重要功能/ [更改是:](https://howtodoinjava.com/java9/ 请在此处查看更新的发行信息[。](https://openjdk.java.net/projects/jdk9/) -## Java 8 功能 +## Java8 功能 **发行日期**:`March 18, 2014` diff --git a/docs/misc2/59.md b/docs/misc2/59.md index 47f23431e0e904fe0d4df1c220068f465e8cc7bd..c575855526fda479a67148b05644f118cabf124e 100644 --- a/docs/misc2/59.md +++ b/docs/misc2/59.md @@ -429,7 +429,7 @@ Test is test comment ``` -希望本 xpath 教程对您有所帮助。 它将帮助您使用 Java 执行 **xpath**。 字符串的 **Java xpath 示例**也将在 **Java 8** 中成功运行。 +希望本 xpath 教程对您有所帮助。 它将帮助您使用 Java 执行 **xpath**。 字符串的 **Java xpath 示例**也将在 **Java8** 中成功运行。 如果您有任何建议,请发表评论。 diff --git a/docs/misc2/61.md b/docs/misc2/61.md index dbb6125a3f3594caba344f8055bdb784d3680989..daf858b1f834035bb105746ea5cba54933354fad 100644 --- a/docs/misc2/61.md +++ b/docs/misc2/61.md @@ -1,4 +1,4 @@ -# Java 8 xpath 示例 – 在字符串上求值 xpath +# Java8 xpath 示例 – 在字符串上求值 xpath > 原文: [https://howtodoinjava.com/xml/evaluate-xpath-on-xml-string/](https://howtodoinjava.com/xml/evaluate-xpath-on-xml-string/) @@ -147,6 +147,8 @@ Lokesh 阅读更多: -[文件](https://howtodoinjava.com/xml/evaluate-xpath-on-dom/)中的 Java xpath 示例 +[文件中的 Java xpath 示例](https://howtodoinjava.com/xml/evaluate-xpath-on-dom/) + [Java xpath 教程](https://howtodoinjava.com/xml/how-to-work-with-xpaths-in-java-with-examples/) + [如何在 Java 中使用 xpath 获取 xml 中的属性值](https://howtodoinjava.com/xml/xpath-attribute-evaluate/) \ No newline at end of file diff --git a/docs/misc2/62.md b/docs/misc2/62.md index 1c87e34aeee50f0f55da0b6715e58a0ec00ee783..b672b93fcf07cf77c11c98da8ed1271c9e88e591 100644 --- a/docs/misc2/62.md +++ b/docs/misc2/62.md @@ -102,18 +102,19 @@ 现在来看几个有关如何构建 xpath 以便基于字段和属性的各种条件获取信息的示例。 | 描述 | XPath | 结果 | -| 获取所有员工姓名 | `/employees/employee/firstName/text()` | [Lokesh,Brian,Alex,Amit,David,Virat,John,Mike,Bob,Gary] | -| 获取所有部门名称 | `/employees/employee/department/name/text()` | [IT,HR,财务,HR,DEVOPS,DEVOPS,IT,HR,财务,IT] | -| 让所有 IT 员工 | `/employees/employee[department/name='IT']/firstName/text()` | [洛克希,约翰,加里] | -| 按编号获取员工 | `/employees/employee[@id=4]/firstName/text()` | [什么] | -| 取得 ID 大于 6 的员工 | `/employees/employee[@id>6]/firstName/text()` | [约翰,迈克,鲍勃,加里] | -| 找大卫的部门 | `/employees/employee[firstName = 'David']/department/name/text()` | [DEVOPS] | -| 获取所有员工 ID | `/employees/employee/@id` | [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] | -| 获取人力资源部门的所有员工 ID | `/employees/employee[department/name='HR']/@id` | [2, 4, 8] | -| 获取员工编号“ Alex” | `/employees/employee[firstName='Alex']/@id` | [3] | -| 获取大于 5 的员工 ID | `/employees/employee/@id[. > 5]` | [6, 7, 8, 9, 10] | -| 获取其 ID 包含“ 1”的员工 | `/employees/employee[contains(@id,'1')]/firstName/text()` | [Lokesh,加里] | -| 获取其 ID 包含 1 的员工 | `descendant-or-self::*[contains(@id,'1')]/firstName/text()` | [Lokesh, Gary] | +| --- | --- | --- | +| 获取所有员工姓名 | `/employees/employee/firstName/text()` | `[Lokesh, Brian, Alex, Amit, David, Virat, John, Mike, Bob, Gary]` | +| 获取所有部门名称 | `/employees/employee/department/name/text()` | `[IT, HR, FINANCE, HR, DEVOPS, DEVOPS, IT, HR, FINANCE, IT]` | +| 获取所有 IT 员工 | `/employees/employee[department/name='IT']/firstName/text()` | `[Lokesh, John, Gary]` | +| 按编号获取员工 | `/employees/employee[@id=4]/firstName/text()` | ` [Amit]` | +| 取得 ID 大于 6 的员工 | `/employees/employee[@id>6]/firstName/text()` | `[John, Mike, Bob, Gary]` | +| 获取大卫的部门 | `/employees/employee[firstName = 'David']/department/name/text()` | `[DEVOPS]` | +| 获取所有员工 ID | `/employees/employee/@id` | ` [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]` | +| 获取人力资源部门的所有员工 ID | `/employees/employee[department/name='HR']/@id` | ` [2, 4, 8]` | +| 获取员工“`Alex`”编号 | `/employees/employee[firstName='Alex']/@id` | `[3]` | +| 获取大于 5 的员工 ID | `/employees/employee/@id[. > 5]` | `[6, 7, 8, 9, 10]` | +| 获取其 ID 包含“1”的员工 | `/employees/employee[contains(@id,'1')]/firstName/text()` | `[Lokesh, Gary]` | +| 获取其 ID 包含 1 的员工 | `descendant-or-self::*[contains(@id,'1')]/firstName/text()` | `[Lokesh, Gary]` | ## 2.求值 xpath 表达式的 Java 示例 @@ -328,7 +329,10 @@ public class Department implements Serializable { 参考文献: -[XPathFactory Java 文件](https://docs.oracle.com/javase/7/docs/api/javax/xml/xpath/XPathFactory.html) +[`XPathFactory` Java 文件](https://docs.oracle.com/javase/7/docs/api/javax/xml/xpath/XPathFactory.html) + [XPath Java 文件](https://docs.oracle.com/javase/7/docs/api/javax/xml/xpath/XPath.html) + [XPathExpression Java 文件](https://docs.oracle.com/javase/7/docs/api/javax/xml/xpath/XPathExpression.html) + [org.w3c.dom.Document Java 文件](https://docs.oracle.com/javase/7/docs/api/org/w3c/dom/Document.html) \ No newline at end of file diff --git a/docs/misc2/63.md b/docs/misc2/63.md index 8ea55649d68f93d27c59e4dd2770f788a5222a51..c9858d26430061d95ed9bf5fd9b1141c1aa39183 100644 --- a/docs/misc2/63.md +++ b/docs/misc2/63.md @@ -1,8 +1,8 @@ -# Java XPath NamespaceContext – 名称空间解析示例 +# Java XPath `NamespaceContext` – 名称空间解析示例 > 原文: [https://howtodoinjava.com/xml/xpath-namespace-resolution-example/](https://howtodoinjava.com/xml/xpath-namespace-resolution-example/) -在此 Java 示例中,我们将使用 [NamespaceContext](https://docs.oracle.com/javase/7/docs/api/javax/xml/namespace/NamespaceContext.html) 将 XPath 名称空间解析学习为 XML 文件,该文件具有名称空间声明和各自的用法。 +在此 Java 示例中,我们将使用[`NamespaceContext`](https://docs.oracle.com/javase/7/docs/api/javax/xml/namespace/NamespaceContext.html)将 XPath 名称空间解析学习为 XML 文件,该文件具有名称空间声明和各自的用法。 ## 命名空间添加了 XML 文件 @@ -20,7 +20,7 @@ ``` -## 实现 NamespaceContext 以创建名称空间解析器 +## 实现`NamespaceContext`以创建名称空间解析器 该名称空间解析器可以与使用了名称空间定义的任何 XML 文件一起使用。 它搜索 XML 文档本身内任何给定名称空间前缀(作为参数传递)的名称空间声明。 因此**无需单独创建名称空间映射**。 @@ -55,7 +55,7 @@ public class NamespaceResolver implements NamespaceContext ``` -## 使用 NamespaceResolver 并应用 XPath +## 使用`NamespaceResolver`并应用 XPath 现在,我们准备在 XML 文件上应用 xpath 表达式。 diff --git a/docs/misc2/64.md b/docs/misc2/64.md index 955840ba9e4c940c7cd7410a9dd2c6c020951fd3..19ce192776c124cb84fb0ca09b6eec14d95aa25d 100644 --- a/docs/misc2/64.md +++ b/docs/misc2/64.md @@ -4,11 +4,11 @@ 很多时候,我们需要解析 XML 文件并从中提取信息。 例如,**使用 xpath** 读取 XML 元素的属性值。 在此 Java XPath 教程中,学习从 XML 字符串获取属性值。 -我正在使用 [**jdom**](https://mvnrepository.com/artifact/org.jdom "jdom jar") 和 [**jaxen**](http://www.java2s.com/Code/Jar/j/Downloadjaxen111jar.htm "jaxen jar") 。 这些也是可用的其他大量开源 API,但是想法保持不变。 +我正在使用 [**jdom**](https://mvnrepository.com/artifact/org.jdom "jdom jar") 和 [**jaxen**](http://www.java2s.com/Code/Jar/j/Downloadjaxen111jar.htm "jaxen jar")。 这些也是可用的其他大量开源 API,但是想法保持不变。 -## Java 程序使用 XPath 从 Java 中获得价值 +## Java 程序使用 XPath 从 Java 中获得值 -在给定的 Java 程序下面,从提供的 XML 字符串创建 DOM 对象。 然后,它使用 **XPath.selectNodes()**方法应用 XPATH 表达式。 +在给定的 Java 程序下面,从提供的 XML 字符串创建 DOM 对象。 然后,它使用`XPath.selectNodes()`方法应用 XPATH 表达式。 方法返回`Element`实例的列表,这些实例是求值 XPath 表达式的结果。 您可以迭代列表并使用结果。 @@ -68,7 +68,7 @@ public class XmlAttributesUsingXPathExample ``` -Please include correct class files. Invalid imports can cause in following error or something like this. +请包括正确的类文件。 无效的导入会导致以下错误或类似的错误。 ```java java.lang.ClassCastException: org.jdom.Document cannot be cast to org.w3c.dom.Node diff --git a/docs/misc2/65.md b/docs/misc2/65.md index c5aa9083be26bfd25918004c5c00c03a6b8c9696..45dafcd358250bc38150f43f5a65d93c36172e2f 100644 --- a/docs/misc2/65.md +++ b/docs/misc2/65.md @@ -2,7 +2,7 @@ > 原文: [https://howtodoinjava.com/xml/xpath-attribute-evaluate/](https://howtodoinjava.com/xml/xpath-attribute-evaluate/) -**的简单示例,如何使用 Java 中的 [xpath](https://howtodoinjava.com/xml/java-xpath-tutorial-example/)** 获取 xml 中的属性值。 我们将学习获取信息以匹配*属性值*,*属性值在*范围内, **xpath 属性 contains()**等。 +如何使用 Java 中的 [xpath](https://howtodoinjava.com/xml/java-xpath-tutorial-example/) 获取 xml 中的属性值的简单示例。 我们将学习获取信息以匹配*属性值*,*属性值在*范围内,xpath 属性`contains()`等。 ## 1\. XPath 属性表达式 @@ -102,12 +102,13 @@ 现在来看几个有关如何构建 xpath 以便基于属性获取信息的示例。 | 描述 | XPath | 结果 | -| 获取所有员工 ID | `/employees/employee/@id` | [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] | -| 获取人力资源部门的所有员工 ID | `/employees/employee[department/name='HR']/@id` | [2, 4, 8] | -| 获取员工编号“ Alex” | `/employees/employee[firstName='Alex']/@id` | [3] | -| 获取大于 5 的员工 ID | `/employees/employee/@id[. > 5]` | [6, 7, 8, 9, 10] | -| 获取其 ID 包含“ 1”的员工 | `/employees/employee[contains(@id,'1')]/firstName/text()` | [Lokesh,加里] | -| 获取其 ID 包含 1 的员工 | `descendant-or-self::*[contains(@id,'1')]/firstName/text()` | [Lokesh, Gary] | +| --- | --- | --- | +| 获取所有员工 ID | `/employees/employee/@id` | `[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]` | +| 获取人力资源部门的所有员工 ID | `/employees/employee[department/name='HR']/@id` | `[2, 4, 8]` | +| 获取员工编号“ Alex” | `/employees/employee[firstName='Alex']/@id` | `[3]` | +| 获取大于 5 的员工 ID | `/employees/employee/@id[. > 5]` | `[6, 7, 8, 9, 10]` | +| 获取其 ID 包含“1”的员工 | `/employees/employee[contains(@id,'1')]/firstName/text()` | `[Lokesh, Gary]` | +| 获取其 ID 包含1 的员工 | `descendant-or-self::*[contains(@id,'1')]/firstName/text()` | `[Lokesh, Gary]` | ## 2\. Java 示例使用 xpath 查找具有属性值的 xml 元素 @@ -328,6 +329,6 @@ public class Department implements Serializable { ``` -让我问您有关如何使用 xpath 查找具有属性值的 xml 元素的问题。 +向我提供有关如何使用 xpath 查找具有属性值的 xml 元素的问题。 学习愉快! \ No newline at end of file