Tag: dom

如何使用DOM解析器在此XML文件中添加元素?

我想知道如何修改这个XML文件, 12345 使用Java中的DOM解析器进入这样的XML文件, 2013-09-09 12345 我试过这个但不行, public class Test { public static final String xmlFilePath = “src/vnx.xml”; public static final String xml2FilePath = “src/input2.xml”; public static void main(String argv[]) { try { DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); Document document = documentBuilder.parse(xmlFilePath); Element version = document.createElement(“heat”); version.appendChild(document.createTextNode(“2013-09-09”)); document.appendChild(version); TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer […]

为什么StAX创建XML比DOM慢?

我试图测量StAX和DOM创建两个相同文档所需的时间。 我不知道为什么DOM在创建XML方面更快。 也许我的StAX编写器代码不是很好。 所以这里是StAX(更长的代码) public static final int pocet =100000; try { String encoding = “UTF-8”; XMLOutputFactory f = XMLOutputFactory.newInstance(); XMLStreamWriter w = f.createXMLStreamWriter( new FileOutputStream(subor), encoding); w.writeStartDocument(encoding, “1.0”); w.writeCharacters(“\r\n”); w.writeStartElement(“Noviny”); for (int i = 1; i <= pocet; i++) { w.writeCharacters("\r\n "); w.writeStartElement("Autor"); w.writeCharacters("\r\n "); w.writeStartElement("Id"); String ID = Integer.toString(i); w.writeCharacters(ID); w.writeEndElement(); w.writeCharacters("\r\n "); […]

包含多个根元素的XML文件

我有一个包含多组根元素的文件。 如何逐个提取根元素? 这是我的XML 我怎样才能一次提取一组Person ?

遍历DOM树以获取(名称,值)属性对和叶节点对

我想遍历DOM中的XML文件,以便检索所有的(名称,值)对: 属性名称和值; 所有叶节点名称及其文本内容; 因此,以下面的XML文件为例: abcd efgh ijkl mnop qrst 我想要的名称值对是: text=title1 id=comment1 data=abcd data=efgh id=commment2 data=ijkl data=mnop data=qrst

与使用DOM解析器手动解析XML文件相比,使用XSLT样式表是否有任何优势

对于我们的一个应用程序,我编写了一个使用java的DOM解析器的实用程序。 它基本上采用XML文件,解析它,然后使用以下方法之一处理数据以实际检索数据。 getElementByTagName() getElementAtIndex() getFirstChild() getNextSibling() getTextContent() 现在我必须做同样的事情,但我想知道使用XSLT样式表是否会更好。 向我们发送XML文件的组织不断更改其架构意味着我们必须更改我们的代码以满足这些shema更改。 我不太熟悉XSLT进程,所以我试图找出是否更好地使用XSLT样式表而不是“手动解析”。 XSLT样式表看起来很有吸引力的原因是我认为如果XML文件的架构发生变化,我只需要更改样式表吗? 它是否正确? 另一件我想知道的是两者中的哪一个(XSLT转换器或DOM解析器)性能更好。 对于手动选项,我只使用DOM解析器来解析xml文件。 XSLT转换器如何实际解析文件? 与手动解析xml文件相比,它是否包含额外的开销? 我问的原因是性能很重要,因为我将处理的数据的性质。 任何建议? 谢谢 编辑 基本上我目前正在做的是解析一个xml文件并处理一些xml元素中的值。 我不会将xml文件转换为任何其他格式。 我只是提取一些值,从Oracle数据库中提取一行并将一个新行保存到另一个表中。 我解析的xml文件只包含用于从数据库中检索某些数据的引用值。 xslt不适合这种情况吗? 如果架构发生变化,是否有更好的方法可以避免代码更改? 编辑2 对于我对XML数据所做的事情不够清楚而道歉。 基本上有一个包含一些信息的XML文件。 我从XML文件中提取此信息,并使用它从本地数据库中检索更多信息。 xml文件中的数据更像是数据库中所需数据的引用键。 然后,我使用XML文件中的特定密钥获取从XML文件中提取的内容以及从数据库中检索的内容,并将该数据保存到另一个数据库表中。 我遇到的问题是我知道如何编写一个DOM解析器来从XML文件中提取我需要的信息,但我想知道是否使用XSLT样式表是一个更好的选择,因为如果架构更改我不会更改代码。 阅读下面的回复听起来像XSLT仅用于转换和XML文件到另一个XML文件或其他格式。 鉴于我不打算转换XML文件,可能不需要添加解析XSLT样式表以及XML文件的额外开销。

使用Unicode(Java)访问/更改JEditorPane的html加载元素+ HTMLEditorKit问题

这将是一个很长的问题,所以忍受我:) 我的应用程序 我正在开发一个Java(带有JFrame GUI)桌面应用程序,它执行以下操作: 扫描(.txt)文件。 从这些文件中解析一些数字,对它们执行一些计算,最后将结果存储在String变量中。 以特殊(表格)格式输出这些数字。 (注意:格式包括一些Unicode(阿拉伯语)字符。) 问题 前两部分进展顺利。 但是,当我来到第3部分(格式化输出)时,我不知道如何显示这种特殊格式,所以, 在Java中显示特殊格式化输出(表)的最佳方法是什么? 注意: Formatter 不会提供帮助,因为它没有对表的适当支持。 解决方案一: 我做了我的研究,发现我可以使用JEditorPane,因为它可以显示特殊格式,如“html”。 所以我决定用所需的(表格)格式创建一个“html”页面,然后在[JEditorPane] [4]上显示这个页面。 我这样做了,它顺利进行,直到我想将一些html元素的值更改为那些(.txt)文件中的解析数字。 如何访问html元素(例如 )并更改其值? 请注意,使用setPage(url)在JEditorPane中加载(.html setPage(url) 。 Unicode字符显示正常,但我无法更改某些元素值(例如,我想将 000,000,000 的值更改为 MainController.getCurrentTotalPayment() 解决方案二: 我找到了一个解决方法,涉及使用HTMLDocument和HTMLEditorKit,这样我就可以从头开始使用HTMLEditorKit创建(.html)并使用kit.insertHTML在JEditorPane上显示它。 我已经使用上面的方法成功添加了内容,并且我还能够从(.txt)文件中添加解析后的数字,因为我将它们存储在my(MainController)类中。 不幸的是,Unicode阿拉伯字符未正确显示。 如何正确显示这些Unicode字符? 所以第一个解决方案缺乏对html元素的访问权限,第二个解决方案缺乏Unicode支持! 我的同事建议我在html文档中使用JSP代码,该代码可以访问我的MainController.java类。 因此,将页面加载到JEditorPane中已经更改了html元素。 没有JSP的帮助,有没有办法做到这一点? 其他人推荐使用JTidy,但是在Java的JDK中没有办法吗? 我对所有可能的解决方案持开放态度。 请帮忙。 我的代码: 省略了一些代码内容,因为它们不相关 MainController.java class MainController { private static String currentTotalPayment; public static void main(String[] […]

哪个html DOM解析器库最适合Java?

我正在研究爬虫,它将在电子商店中搜索商品。 这是我的论文,所以没什么商业化的.. 我使用Java SE。 我需要某种高级库,对诊断进行一些测试(如果该网页是我正在寻找的),并从正确的数据中提取相关数据。 你有解析器库的个人经验来推荐我最好的吗?

JAVA XML – 如何在XML节点中获取特定元素?

这是一项学术任务,我们获得了一个非常大的XML文件,其中包含数百个这样的条目。 对于每个项目,我们应该列出经理的ID,将项目添加到列表的最后一个人的人员ID,以及当前的项目数。 我已阅读并重读了Oracle DOM API和各种Node API。 我们正在使用JAVA,我不能为我的生活找出如何搜索每个item_list节点的各个“字段”。 以下是我们给出的数据示例。 5 1/1/2014 1/6/2014 7 5 1/15/2014 1/1/2014 1/9/2014 7 我尝试过类似的事情: NodeList nodes = queryDoc.getElementsByTagName(“item_list”); for(int i = 0; i < nodes.getLength(); i++) { Node node = nodes.item(i); if(node != null) { System.out.println(node.manager); } } 并且暂时使用这段代码,但我想知道如何从每个节点的各个字段中检索数据。

Java Dom解析器报告错误的子节点数

我有以下xml文件: 然后我试图用java解析它,但getchildnodes报告错误的子节点数。 Java代码: DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse(this.file); document.getDocumentElement().normalize(); Element root = document.getDocumentElement(); NodeList nodes = root.getChildNodes(); System.out.println(nodes.getLength()); 结果:3 此外,我正在获取用于访问节点属性的NPE,因此我猜测某些事情可怕的错误。

获取给定节点名称的另一个节点的子节点

我有这样的XML: 1 Declaration of Human Rights lib 2 Fair trade lib 3 The wars for water lib 我有这个代码: //XML parsing Document docsDoc = null; try { DocumentBuilder db = dbf.newDocumentBuilder(); docsDoc = db.parse(new InputSource(new StringReader(xmlWithDocs))); } catch(ParserConfigurationException e) {e.printStackTrace();} catch(SAXException e) {e.printStackTrace();} catch(IOException e) {e.printStackTrace();} //retrieve document elements NodeList docs = docsDoc.getElementsByTagName(“document”); if (docs.getLength() > […]