gpt4 book ai didi

java - 使用Java读取远程XML文件的标签值

转载 作者:行者123 更新时间:2023-12-01 22:37:39 24 4
gpt4 key购买 nike

我正在尝试读取存储在远程位置的 XML 文件并打印标签“latest”的值。目前我能够打印整个 XML 文件的内容,但我只想打印“最新”标签的值,即 3.6.8 。我无法理解构建包中的哪个用于读取 XML 文件。请帮忙

XML 文件

    <?xml version="1.0" encoding="UTF-8"?>
<metadata>
<groupId>com.avocent.commonplatform.cps.symbols</groupId>
<artifactId>MasterData</artifactId>
<versioning>
<latest>3.6.8</latest>
<release>3.6.8</release>
<versions>
<version>1.0.19</version>
<version>1.0.27</version>
<version>1.0.29</version>
<version>1.0.30</version>
<version>1.0.32</version>
<version>1.0.33</version>
<version>1.0.35</version>
<version>2.0.1</version>
<version>2.0.3</version>
<version>2.0.4</version>
<version>2.0.5</version>
<version>2.0.6</version>
<version>2.0.7</version>
<version>3.0.1</version>
<version>3.0.2</version>
<version>3.0.3</version>
<version>3.0.4</version>
<version>3.0.5</version>
<version>3.0.6</version>
<version>3.0.7</version>
<version>3.0.9</version>
<version>3.0.10</version>
<version>3.0.11</version>
<version>3.0.13</version>
<version>3.4.0</version>
<version>3.5.0</version>
<version>3.5.1</version>
<version>3.5.2</version>
<version>3.5.3</version>
<version>3.5.4444</version>
<version>3.6.0</version>
<version>3.6.1</version>
<version>3.6.5</version>
<version>3.6.6</version>
<version>3.6.7</version>
<version>3.6.8</version>
</versions>
<lastUpdated>20141016143914</lastUpdated>
</versioning>
</metadata>

Java 代码..

    public class MavenMetadataReader {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
BufferedReader reader = null;
try {
URL url = new URL("http://hsv-artifactory.emrsn.org:8081/artifactory/libs-release-local/com/avocent/commonplatform/cps/symbols/MasterData/maven-metadata.xml");

reader = new BufferedReader(new InputStreamReader(url.openStream()));
while (reader.ready()) {
System.out.println(reader.readLine());
}
} catch (MalformedURLException ex) {
Logger.getLogger(MavenMetadataReader.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(MavenMetadataReader.class.getName()).log(Level.SEVERE, null, ex);
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException ex) {
Logger.getLogger(MavenMetadataReader.class.getName()).log(Level.SEVERE, null, ex);
}
}
}

}
}

编辑1:

我使用@Khalid Alqinyah提供的答案来解决我的问题。最终的java代码。

   public class MavenMetadataReader {


/**
* @param args the command line arguments
*/
public static void main(String[] args) throws XMLStreamException {

try {
URL url = new URL("http://hsv-artifactory.emrsn.org:8081/artifactory/libs-release-local/com/avocent/commonplatform/cps/symbols/MasterData/maven-metadata.xml");
XMLStreamReader reader1 = XMLInputFactory.newInstance().createXMLStreamReader(url.openStream());
String Latest = null;
while (reader1.hasNext()) {
if (reader1.next() == XMLStreamConstants.START_ELEMENT) {
if (reader1.getLocalName().equals("latest")) {
Latest = reader1.getElementText();
break;
}
}
}
System.out.println(Latest);
} catch (IOException ex) {
// handle exception
Logger.getLogger(MavenMetadataReader.class.getName()).log(Level.SEVERE, null, ex);
} catch (XMLStreamException ex) {
// handle exception
Logger.getLogger(MavenMetadataReader.class.getName()).log(Level.SEVERE, null, ex);
} finally {
// close the stream


}

}

}

最佳答案

您不需要外部库。使用XPath .

public String readLatestVersion(String xmlUri) throws Exception {

DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = builderFactory.newDocumentBuilder();
Document document = builder.parse(xmlUri);

XPath xPath = XPathFactory.newInstance().newXPath();
String expression = "/metadata/versioning/latest";
String latestVersion = xPath.compile(expression).evaluate(document);

return latestVersion;
}

要调用上述方法,请使用:

String latestVersion = readLatestVersion("http://example.org/maven-metadata.xml");
<小时/>

为了使事情正确,请确保您有以下导入:

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.Document;

关于java - 使用Java读取远程XML文件的标签值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26654210/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com