使用DOM分析器

时间:2018-06-21 15:58:24

标签: xml xml-parsing printwriter domparser

我对使用Java生成XML相当陌生,并且在尝试使用DOMParser将节点追加到特定标签时遇到问题。最终,我的目标是使用第一行创建标签来动态解析XLS文件,并使用其他行中的数据相应地填充XML。但是现在,我只想知道如何添加XML中已经存在的特定节点。

XML文档

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<header>

+<TAG1>*
    $<TAG2>**
    </TAG2>**
    +<TAG3>**
        $<TAG4>***
        </TAG4>***
        +<TAG5>***
            $<TAG6>****
            </TAG6>****
            $<TAG7>****
            </TAG7>****
        </TAG5>
        $<TAG8>
        </TAG8>
   </TAG3>**
</TAG1>

</header>

我使用PrintWriter构建了XML文件以写出选项卡,然后在写完标签后关闭了文档。现在,我尝试使用DOMParser重新打开它们,并将数据添加到适当的标记中。

我一直在尝试通过将节点转换为元素来选择标签(例如TAG6)getElementsByTagName。但是,我一直收到ClassCastException。现在,我试图在文档中的任意位置添加一个节点。

File outputFile = new File("C:\\Users\\User\\Documents\\test.xml");
DocumentBuilderFacotry dBFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dB = dBFactory.newDocumentBuilder();
org.w3c.dom.Document doc = dB.parse(outputFile);

org.w3c.dom.Element tagTest = doc.createEleement("tagTest");
org.w3c.dom.Element node = doc.createElement("newNode");
org.w3c.dom.Text text = doc.createTestNode("data");
node.appendChild(text);
tagTest.appendChild(node);


TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer/setOutputProperty(OutputKeys.INDENT, "yes");
Writer out = new StringWriter();
transformer.transform(new DOMSource(doc), new StreamResult(outputFile));
System.out.println(out.toString());

我的代码编译没有错误或异常,但是即使代码的最后一行,也没有任何内容打印到控制台。同样,在XML文档的任何地方都没有新节点出现。

0 个答案:

没有答案