1

我们有一个 xml 解析器(用 Java 实现)来解析 xml 文档,如下所示。

现在我们要在 xml-parser 中添加功能,它允许用户从命令行覆盖 xml 文件中的值,即系统属性(-D 属性)。不需要以任何方式准备 xml 文件。

应该可以使用如下语法提供 -D 属性:

-Dxml.id0001=host:22.33.44.55,ports:6000;6001

XML文件:

<resources> 
    <resource id="id001">
        <property name="host">123.234.34.56</property>
        <property name="ports">7000;7001</property>
    </resource>
    <resource id="id002">
        <property name="host">987.876.765.54</property>
    </resource>
</resources>

问题:-D 属性中应该使用哪些分隔符,以避免对 xml 文档中的数据施加约束?例如在上面的例子中 7000;7001 包含“;” 在它的价值,所以不能用它作为分隔符。我希望 xml 数据能够包含独立于 -D 属性的语法的任何数据。

这会是更好的语法吗:

-Dxml.id0001=<host>22.33.44.55<ports>6000;6001

因为 XML 的文本值中不允许使用“小于/大于”字符。

另外:是否有任何现有的解析器库可以帮助解决这个问题?我搜索但找不到一个。

未来的语法会越来越先进,

-Dxml.*=<host>22.33.44.55<ports>6000;6001 // change host/port for any resource
-Dxml.*=<host<135.246.357.468>>22.33.44.55 // change host only for resources that has host=135.246.357.468

等等等等

4

0 回答 0