以下文本不是有效的XML,因为它使用非标准标记名称和值...
<?xml version="1.0" encoding="utf-8"?>
<Command>
<Priority value='1'/>
<DeviceId value='1111'/>
<TimeOut value='30000'/>
<Command value='GetState'/>
<Value value='12465767890'/>
<Number value='1'/>
<State value='None'/>
</Command>
如何在Java应用程序中解析这个非标准XML?
答案 0 :(得分:3)
那么,“不符合”或“不符合标准”是什么意思......?
如果你的意思是它不合规,因为它使用单引号......
首先,我很确定使用单引号已经符合XML标准了吗?但是,如果要使用任何标准的XML解析库,则可以先使输入更符合要求,例如将所有'
个字符替换为"
个字符。
否则,可以尝试extend
标准XML解析库的某些组件,覆盖解析代码以搜索属性 - 值对的单引号。
这些都不是很漂亮,但他们会做的。
如果你的意思是它不合规,因为属性 - 值对实际上被称为属性名称的'value'...
没关系 - 如果属性使用有效字符,您可以调用属性。当然,它应该有一个有意义的名称,以便XML更容易理解,但将其称为“值”并没有错。
标签名称也是如此 - XML没有标准的标签名称。 XML旨在允许您使用所需的任何标记名称和属性名称,因为它不使用任何无效的字符。在你的情况下,它的所有英文字符,所以它是有效的。
如果你说的是没有结束标签......
如果您不需要将任何内容存储在标记中,那么使用单个标记的格式是有效的XML。如果您希望将内容存储在其中,则只需要打开和关闭标记。对于您的代码,它们只是具有属性 - 值对的单个标记,这完全有效。
最终,最好的方法是从生成的任何地方纠正输入,如果可能的话 - 如果不是编写符合XML的输出,它就不是一个非常好的XML生成器。
答案 1 :(得分:0)
在JDOM中它是:
Element rootElement = new Element("EivCmd");
Document doc = new Document(rootElement);
Element Priority = new Element("Priority");
rootElement.addContent(Priority);
Priority.setAttribute(new Attribute("value", "1"));