Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

我们以实际的示例来看这两个类的使用,示例代码以自定义的网页框为例子,源码在这里,下面就以这个额自定义控件中设计到读取XML的部分代码为例子进行具体的讲解。先来看一下在表中添加了一个网页框控件后,表单的XML文件(frm文件)中关于这个控件的XML片段:,下面就以这个自定义控件中设计到读取XML的部分代码为例子进行具体的讲解。先来看一下在表中添加了一个网页框控件后,表单的XML文件(frm文件)中关于这个控件的XML片段:

Code Block
languagexml
title网页框控件XML片段
linenumberstrue
<InnerWidget class="com.fr.plugin.form.widget.core.RHIframe">
    <WidgetName name="rHIframe0"/>
    <WidgetAttr>
        <PrivilegeControl/>
    </WidgetAttr>
    <Attr scrollX="true" scrollY="true"/>
    <RHIframeAttr class="com.fr.plugin.form.widget.core.RHIframeAttr">
        <RHIframeSource class="com.fr.plugin.form.widget.core.TemplateSource">
            <Attr path="/mark.cpt"/>
        </RHIframeSource>
        <Parameters/>
    </RHIframeAttr>
</InnerWidget>

...

Code Block
GeneralXMLTools#readXMLable(XMLableReader);

如果希望进一步了解和学习嵌套XML的读写,可以进一步参考RHIframe对象的属性RHIframeAttr的XML读写,参考上面的讲解,应该可以更加深刻的了解。

...

其他

文本节点读写

Code Block
languagexml
titleTextNode
<Text><![CDATA[My Text]]></Text>

其中的CDATA标记是为了防止XML文本中出现了特殊字符导致XML无法解析其中的CDATA标记是为了防止XML文本中出现了特殊字符导致XML无法解析

上面的XML,写的方式为:

Code Block
languagejava
title写文本节点
writer.startTAG("Text");
writer.textNode("My Text");
writer.end();

...

Code Block
languagejava
title读文本节点
if ("Text".equals(nodeName)) {
    String text = reader.getElementValue();
}

 

注意事项

写XML的时候,XMLPrintWriter#startTAG方法和XMLPrintWriter#end方法一定要成对出现,否则就会写出下面这样的XML

Code Block
languagexml
title损坏的XML
<Text><![CDATA[My Text]]>

这样会导致整个XML无法解析,模板也就无法正确读取了。