- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想通过 XPathFactory 列出 xml 文档中的一些节点,但我得到的是没有 xml 节点的纯文本作为返回我的Xml文档是这样的:
<?xml version="1.0" encoding="utf-8"?>
<journal>
<title>Hakim Research Journal</title>
<subject>Medical Sciences</subject>
<articleset>
<article>
<title>Challenges and Performance Improvement Approaches of Boards of Trustees of Universities of Medical Sciences and Health Services </title>
<content_type>Original</content_type>
</article>
<article>
<title> Risk Factors of Infant Mortality Rate in North East of Iran </title>
<content_type>Original</content_type>
</article>
</articleset>
</journal>
我想要返回元素,如下所示:
<article>
<title>Challenges and Performance Improvement Approaches of Boards of Trustees of Universities of Medical Sciences and Health Services in Iran </title>
<content_type>Original</content_type>
</article>
<article>
<title> Risk Factors of Infant Mortality Rate in North East</title>
<content_type>Original</content_type>
</article>
我的代码实现是:
String result="";
File xmlDocument = new File("e://journal_last.xml");
InputSource inputSource = new InputSource(new FileInputStream(xmlDocument));
XPathFactory factory=XPathFactory.newInstance();
XPath xPath=factory.newXPath();
XPathExpression articleset;
articleset = xPath.compile("/journal/articleset/)");
result = articleset.evaluate(inputSource);
System.out.println(result);
但它只返回没有节点标签的节点的纯文本!输出为:
Challenges and Performance Improvement Approaches of Boards of Trustees of Universities of Medical Sciences and Health Services
Original
Risk Factors of Infant Mortality Rate in North East
Original
你能帮我一下吗?我感谢任何帮助。
最佳答案
您可以在 Document
上评估 XPath
以获取文章的 NodeList
,然后编写 NodeList
> 作为 xml。
public class Main {
public static void main(String[] args) throws Exception {
File xmlDocument = new File("e://journal_last.xml");
FileInputStream xmlInputStream = new FileInputStream(xmlDocument);
Document doc = parseDocument(new InputSource(xmlInputStream));
NodeList articleList = evaluateXPath(doc, "/journal/articleset",
NodeList.class);
String xmlString = writeXmlString(articleList);
System.out.println(xmlString);
}
private static Document parseDocument(InputSource inputSource)
throws ParserConfigurationException, SAXException, IOException {
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory
.newInstance();
DocumentBuilder docBuilder = documentBuilderFactory
.newDocumentBuilder();
Document doc = docBuilder.parse(inputSource);
return doc;
}
@SuppressWarnings("unchecked")
private static <T> T evaluateXPath(Document doc, String xpath,
Class<T> resultType) throws XPathExpressionException {
QName returnType = resolveReturnType(resultType);
XPathFactory factory = XPathFactory.newInstance();
XPath xPath = factory.newXPath();
XPathExpression xpathExpression = xPath.compile(xpath);
Object resultObject = xpathExpression.evaluate(doc, returnType);
return (T) resultObject;
}
private static QName resolveReturnType(Class<?> clazz) {
if (NodeList.class.equals(clazz)) {
return XPathConstants.NODESET;
} else {
throw new UnsupportedOperationException("Not implemented yet");
}
}
private static String writeXmlString(NodeList nodeList)
throws TransformerConfigurationException,
TransformerFactoryConfigurationError, TransformerException {
StreamResult streamResult = new StreamResult(new StringWriter());
TransformerFactory transformerFactory = TransformerFactory
.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
for (int i = 0; i < nodeList.getLength(); i++) {
Node articleListItem = nodeList.item(i);
DOMSource source = new DOMSource(articleListItem);
transformer.transform(source, streamResult);
}
String xmlString = streamResult.getWriter().toString();
return xmlString;
}
}
关于java - XPathFactory返回xml文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26204684/
我的应用程序在 AIX 上出现 xpathfactory 错误,该错误发生在代码 XPathFactory xpf = XPathFactory.newInstance(); 的这一行。但是,它在 W
迁移到 Java 8 后,您可能会看到此错误: javax.servlet.ServletException: java.lang.RuntimeException: XPathFactory#new
我正在尝试运行机器学习工具包 LightSide ( http://lightsidelabs.com/what/research/)。但是,当我运行包含的批处理文件时,它在初始屏幕上崩溃,并且日志包
我正在尝试使用 XPathFactory 来计算 Java 应用程序中的表达式。但是我遇到了撒克逊特有的错误。有一次我使用 Saxon 来实现某些功能,为此我必须设置一个系统属性: System.se
javax.xml.XPathFactory.newInstance() 是线程安全的吗? 我问这个问题是因为我发现它的文档含糊不清。 The JDK 5 docs根本不提线程安全;在 JDK 6他们
我正在尝试从 android(java) 中的 xml 文档中检索一个节点。 XPATH config:Manifest/config:Text[@config:name='site
我在我们的一个实时服务器上不断收到以下异常(其他运行相同代码的服务器似乎没问题): java.lang.RuntimeException: XPathFactory#newInstance() fai
我正在尝试做一些我认为非常简单的事情,只需断言 Xpath 节点的属性是一个特定值。该节点没有值,只有一个属性值,如下:- (将返回“true”或“false”) 这是我的代码: //R
XPathFactory.newInstance(String uri) 的文档是 here 。 我试图让这个失败,如下所示: println(System.getProperty("DEFAULT_
我正在尝试创建一个新的 xpath 工厂实例,它在我的本地机器上运行完美,没有任何问题,但在我的 ubuntu 服务器(16.0)java 1.7 实例中抛出以下错误。 SEVERE: Caught
我在 Mac OS X 和 Saxon-HE 9.3.0.5 上使用 Java SE 6。 ServiceLoader 无法找到 javax.xml.xpath.XPathFactory 的 Saxo
我们的 J2EE/Spring/Mybatis Web 应用程序已经在 Java 7(Centos 上)上运行良好一段时间了,但最近我们尝试将 JVM 更新到 Java 8,现在我们在启动时得到以
在我的 Web 应用程序中将 Java 7 升级到 Java 8 时,我遇到了 Saxon 问题: javax.xml.xpath.XPathFactoryConfigurationException
我是一名优秀的程序员,十分优秀!