我想代替这个:
<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 解析器中能否正确解析该属性?人类可读性 + 简洁性是 atm 最重要的目标,但代价是多少是一个有效的问题。
最佳答案
分号在 XML 中不会导致任何问题。原因
<person forename="Charles; Theo&dore; Maximilian"/>
有问题是因为 &
需要表示为 &
如果它不启动实体:
<person forename="Charles; Theo&dore; Maximilian"/>
由于 XML 中的属性只能有一个值,因此所有规范的 XPath 实现都会将该字符串解释为单个值。以分号分割字符串必须在应用程序级别实现;但你仍然可以向 XPath 询问
//person[contains(@forename, 'Theodore')]
关于xml - 使用分号;在 XML 中为属性提供多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41692093/