我想代替此:
<person>
<forename>Charles</forename>
<forename>Theodore</forename>
<forename>Maximilian</forename>
</person>
这样做:
<person forename="Charles; Theodore; Maximilian"/>
这样可以在第一眼看上去格式化,不像例如:
<person forename="Charles; Theo&dore; Maximilian"/>
因为在visual studio中格式不正确而引发错误,提示我猜测分号的确是格式正确,属性将被正确解析。
除此之外,我在其他地方看到过像这样的Qt代码:
#include <qdom.h>
#include <qstring.h>
int main(){
QDomDocument doc;
QDomElement root = doc.createElement("root");
doc.appendChild(root);
QDomElement elem = doc.createElement("test");
elem.setAttribute("arg", "value1;value2;value3");
root.appendChild(elem);
qDebug("%s", doc.toString().ascii());
return 0;
}
然而,我对所有xml解析都没有经验,是否会在最流行的(生产环境)xml解析器中正确解析属性?人类可读性+短缺是最重要的目标,但成本是一个有效的问题。
答案 0 :(得分:3)
分号在XML中没有问题。
之所以如此<person forename="Charles; Theo&dore; Maximilian"/>
是有问题的,因为&
如果它没有启动实体则需要表示为&
:
<person forename="Charles; Theo&dore; Maximilian"/>
由于XML中的属性只能有一个值,所有规范的XPath实现都会将字符串解释为单个值。必须在应用程序级别实现在分号上拆分字符串;但你仍然可以问XPath
//person[contains(@forename, 'Theodore')]