用分号;在XML

时间:2017-01-17 08:20:41

标签: xml xml-parsing

我想代替此:

<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解析器中正确解析属性?人类可读性+短缺是最重要的目标,但成本是一个有效的问题。

1 个答案:

答案 0 :(得分:3)

分号在XML中没有问题。

之所以如此
<person forename="Charles; Theo&dore; Maximilian"/>

是有问题的,因为&如果它没有启动实体则需要表示为&amp;

<person forename="Charles; Theo&amp;dore; Maximilian"/>

由于XML中的属性只能有一个值,所有规范的XPath实现都会将字符串解释为单个值。必须在应用程序级别实现在分号上拆分字符串;但你仍然可以问XPath

//person[contains(@forename, 'Theodore')]