从没有根节点的文件中提取后,将根节点添加到XML

时间:2011-05-11 15:50:47

标签: xml parsing

我有记录方法调用的代码。因此它只能通过追加到最后来记录,我没有根节点就可以记录...所以结构是这样的......

<method>
    <handle id="0"/>
    <timestamp>0</timestamp>
    <signature>int[] path.getSelectedObjectIds()</signature>
    <arguements>
        <argument>rO0ABXA=</argument>
    </arguements>
    <return>value</return>
</method>

<method>
    <handle id="0"/>
    <timestamp>0</timestamp>
    <signature>int path.getObjectIDFromKey(String)</signature>
    <arguements>
        <argument>Selectable1</argument>
        <argument>2</argument>
    </arguements>
    <return>value</return>
</method>

所以现在我正试图用这样的东西来读取这个文件

        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        Document doc = db.parse(new File("methodLog.txt"));

        // normalize text representation
        doc.getDocumentElement().normalize();

        NodeList listOfMethods = doc.getElementsByTagName("method");
        int totalMethods = listOfMethods.getLength();
        System.out.println("Number of methods: " + totalMethods);

        for (int i = 0; i < listOfMethods.getLength(); i++) {
           ...

并收到文档必须格式正确的错误。有没有一种快速方法可以立即围绕文件中当前存在的内容添加根标记(比如“方法”)?

1 个答案:

答案 0 :(得分:0)

通过将htmltext用于xml我遇到了同样的问题。这是

<p align="left"><font..>text</font></p><p align="left"><font ..>text</font></p>

我将其解析为字符串并添加了标记:

var s:String = xmlfile.toXmlString(); //don't know what it is in your language I use AS3
var newString:String = "<html>" + s + "</html>"; //adding the tags
xmlfile = new XML(newString); //parse new string into xml

所以新xml的输出是:

<html>
     <p align="left">
          <font..>text</font>
     </p>
     <p align="left">
          <font ..>text</font>
     </p>
</html>

这是一种简单的方法。希望这可以帮助你。