我将尝试描述我的问题。 我有下一个结构的 XML 文档(不要看俄语文本;没关系):
<Books>
<Book ganre="fantasy">
<bookId>FD46</bookId>
<bookName>Меч предназначения</bookName>
<bookAuthor>Анджей Сапковский</bookAuthor>
<bookYear>1994</bookYear>
<bookAvailable>false</bookAvailable>
</Book>
<Book ganre="fantasy">
<bookId>0RD7</bookId>
<bookName>Башня ласточки</bookName>
<bookAuthor>Анджей Сапковский</bookAuthor>
<bookYear>1997</bookYear>
<bookAvailable>false</bookAvailable>
</Book>
<Book ganre="action">
<bookId>709F</bookId>
<bookName>Автостопом по галактике</bookName>
<bookAuthor>Дуглас Адамс</bookAuthor>
<bookYear>1979</bookYear>
<bookAvailable>false</bookAvailable>
</Book>
</Books>
尝试通过 bookID
查找元素在这个 Xpath 的帮助下
FileInputStream fileInputStream = new FileInputStream("Test/Books.xml");
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document document = documentBuilder.parse(fileInputStream);
XPathFactory xPathFactory = XPathFactory.newInstance();
XPath xPath = xPathFactory.newXPath();
Node node = (Node) xPath
.evaluate("//Book[bookId/text()='" + bookID + "']", document.getDocumentElement(), XPathConstants.NODE);
bookID
- 这是用户输入(例如像这样)
Scanner sc = new Scanner(System.in, "cp866");
String bookID;
bookID = sc.nextLine();
所以想法是从我们在字符串 <bookName></bookName><bookAuthor></bookAuthor>
中找到的具有当前 ID 的这个对象从 xml 节点返回这样我就可以放入另一个 xml。
喜欢
String takenBookName = new XMLDocument(xml).xpath("/Books/Book/bookName/text").get(0); //it will doesnt work ;)
最佳答案
必须为你工作。
//Book[bookId/text()='709F']/bookName/text()
关于java - 如何使用 Xpath 正确地从 XML 传递对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32822481/