我们有一个xml-parser(用Java实现),它解析xml文档,如下所示。
现在我们要在xml-parser中添加功能,允许用户从命令行覆盖xml文件中的值,即系统属性(-D property)。不应该以任何方式准备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中的文本值不允许使用“less / greater than”字符。
此外: 是否有任何现有的解析器库可以帮助解决这个问题?我搜索但找不到一个。
将来语法会更加先进,
-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
等。等