-4

The following text is not valid XML, as it is using non-standard tag names and values...

<?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>

How can I parse this non-standard XML in my Java application?

4

2 回答 2

3

那么,您所说的“不合规”或“不标准”是什么意思……?

如果您的意思是它不合规,因为它使用单引号......

首先,我很确定使用单引号已经符合 XML 标准?但是,如果您想使用任何标准的 XML 解析库,您可以首先使输入更加兼容,例如将所有'字符替换为"字符。

否则,可能会尝试extend使用标准 XML 解析库的某些组件,覆盖解析代码以搜索属性值对的单引号。

这些都不是很漂亮,但他们会完成这项工作。

如果您的意思是它不合规,因为属性值对实际上被称为属性名称的“值”......

没关系 - 你可以调用任何你想要的属性,只要它使用有效的字符。当然,它确实应该有一个有意义的名称,以便 XML 更易于理解,但称其为“值”也没有错。

标签名称也是如此——XML 没有标准的标签名称。XML 旨在允许您使用任何您想要的标记名称和属性名称,因为它不使用任何无效字符。在你的情况下,它都是英文字符,所以它是有效的。

如果您在谈论没有结束标签...

使用 ` 形式的单标签是有效的 XML,前提是您不需要将任何内容存储在标签中。如果您希望将内容存储在其中,则只需要打开和关闭标签。对于您的标签,它们只是具有属性值对的单个标签,这是完全有效的。


最终,如果可能的话,最好的方法是从生成输入的任何地方纠正输入——如果它不编写符合 XML 的输出,它就不是一个很好的 XML 生成器。

于 2012-10-31T09:22:13.700 回答
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"));
于 2012-10-31T09:44:50.987 回答