Tag: dom

如何在Java中将DOM节点从一个文档复制到另一个文档?

我将节点从一个文档复制到另一个文档时遇到了问题。 我已经使用了Node的adoptNode和importNode方法但它们不起作用。 我也试过appendChild,但是抛出exception。 我正在使用Xerces。 这不是在那里实施的吗? 还有另一种方法吗? List nodesToCopy = …; Document newDoc = …; for(Node n : nodesToCopy) { // this doesn’t work newDoc.adoptChild(n); // neither does this //newDoc.importNode(n, true); }

DOMDocument getNodeValue()返回null(包含输出转义字符串)

我正在处理一个DomDocument,它基本上是SOAP Web服务的XML结果。 为了给你一个想法,这就是它的样子 …<output><escaped<string… 是的,ChildNode的值是一个已经输出转义的字符串,并且是在此XML中打包的XML。 我做通常运行的DomDocument处理如 NodeList rows = dom.getElementsByTagName(ChildNode); for(int i=0;i<rows.length;i++) { System.out.println(rows[i].getParentNode()); // returns ParentNode System.out.println(rows[i].getNodeName()); // returns ChildNode System.out.println(rows[i].getNodeValue()); // returns null } 在检查上面的代码之后,您意识到即使节点为ParentNode和NodeName节点返回正确的值,它也会在访问getNodeValue()时返回null值。 这里有一个字符串,我可以在我的控制台输出中看到它。 但我不确定我在这里缺少什么技巧,输出逃逸是否会以任何特定的方式混乱? 谢谢,Parijat

我可以在Java中使用for-each遍历NodeList吗?

我想使用Java中的for-each循环遍历NodeList 。 我让它使用for循环和do-while循环但不适用于每个。 NodeList nList = dom.getElementsByTagName(“year”); do { Element ele = (Element) nList.item(i); list.add(ele.getElementsByTagName(“MonthId”).item(0).getTextContent()); i++; } while (i < nList.getLength()); NodeList nList = dom.getElementsByTagName("year"); for (int i = 0; i < nList.getLength(); i++) { Element ele = (Element) nList.item(i); list.add(ele.getElementsByTagName("MonthId").item(0).getTextContent()); }

xpath 2.0 for java possible

我应该为XPath使用什么包? 我想要查询元素,然后在这些节点周围提取一些值。 也许一个或多个级别更高,一些属性。 javax.xml.xpath是XPath 1.0。 javax.xml.xpath和org.w3c.dom是正确的方法,还是有更现代的实现? org.w3c.dom很尴尬,JDOM看起来很简单。

如何将JAXB对象封送到org.w3c.dom.Document?

这给了我一个Document对象,其顶级节点没有子节点: public static Document getDocument(Object jaxb) { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); //dbf.setNamespaceAware(true); Document doc = dbf.newDocumentBuilder().newDocument(); JAXBContext context = JAXBContext.newInstance(jaxb.getClass()); context.createMarshaller().marshal(jaxb, doc); return doc; } 这是解决方法,它看起来效率更低,因为它转换为String然后转换为Document。 public static Document getDocument(Object jaxb) { StringWriter writer = new StringWriter(); JAXBContext context = JAXBContext.newInstance(jaxb.getClass()); context.createMarshaller().marshal(jaxb, writer); return DocumentBuilderFactory.newInstance().newDocumentBuilder(). parse(new InputSource(new StringReader(writer.toString())); } 是否有可能完成我想要完成的任务?

java 8中的漂亮打印XML

我有一个XML文件存储为DOM文档,我想将它打印到控制台,最好不使用外部库。 我知道这个问题已在本网站上被多次询问,但以前的答案都没有对我有用。 我正在使用java 8,所以也许这是我的代码与以前的问题不同的地方? 我还尝试使用从网络上找到的代码手动设置变换器,但这只是导致not found错误。 这是我的代码,它当前只是在控制台左侧的新行上输出每个xml元素。 import java.io.*; import javax.xml.parsers.*; import javax.xml.transform.*; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; import org.xml.sax.InputSource; import org.xml.sax.SAXException; public class Test { public Test(){ try { //java.lang.System.setProperty(“javax.xml.transform.TransformerFactory”, “org.apache.xalan.xsltc.trax.TransformerFactoryImpl”); DocumentBuilderFactory dbFactory; DocumentBuilder dBuilder; Document original = null; try { dbFactory = DocumentBuilderFactory.newInstance(); dBuilder = dbFactory.newDocumentBuilder(); original = dBuilder.parse(new InputSource(new InputStreamReader(new FileInputStream(“xml […]

如何在java中的某个元素之后/之前将元素插入到xml中

这是我的代码,也许你会马上注意到我缺少的东西: DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = domFactory.newDocumentBuilder(); Document doc = builder.parse(fileName)); XPathFactory factory = XPathFactory.newInstance(); XPath xpath = factory.newXPath(); XPathExpression expr = xpath.compile(“//CustomerId”); Object result = expr.evaluate(doc, XPathConstants.NODESET); Nodelist nodes = (NodeList) result; Text a = doc.createTextNode(“value”); Element p = doc.createElement(“newNode”); p.appendChild(a); for (int i = 0; i < nodes.getLength(); i++) { nodes.item(i).insertBefore(p, […]

如何在Java中将xml元素及其子节点转换为String?

您好我想将XML节点及其子节点转换为具有节点名称的字符串。 例如,我从XML文档中获取一个节点,如下所示: *86 *86 *80 0 我想将整个节点转换为字符串。 使用nodenames,不仅是文本。 非常感谢在这方面的任何帮助。 谢谢。

流式XPath评估

是否有任何生产就绪库可用于针对提供的xml文档进行流式XPath表达式评估? 我的调查表明,大多数现有解决方案在评估xpath表达式之前将整个DOM树加载到内存中。

JAXB @XmlAdapter用于任意XML

我有一个org.w3c.dom.Element ,我从我的XmlAdapter返回自定义@XmlElement ,我想将它作为任意XML包含在JAXB对象中(我知道我必须手工制作XSD)。 但是,JAXB抱怨道 org.w3c.dom.Element is an interface, and JAXB can’t handle interfaces. 显然,w3c XML类型不支持Java类型 ,这是一种耻辱。 但javax.xml.transform.Result ,当我使用显然支持的javax.xml.transform.Result时,我得到了同样的错误。 如何在JAXB中包含任意XML元素作为元素? 注意:根据https://forums.oracle.com/thread/1668210我也试过了 MessageFactory factory = MessageFactory.newInstance(); message = factory.createMessage(); SOAPElement element = message.getSOAPBody().addDocument(doc); 但这也给出了同样的错误。