xml - 使用分号;在 XML 中为属性提供多个值

标签 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 解析器中能否正确解析该属性?人类可读性 + 简洁性是 atm 最重要​​的目标,但代价是多少是一个有效的问题。

最佳答案

分号在 XML 中不会导致任何问题。原因

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

有问题是因为 & 需要表示为 & 如果它不启动实体:

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

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

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

关于xml - 使用分号;在 XML 中为属性提供多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41692093/

相关文章:

java.lang.NoClassDefFoundError ANT 构建

python - 将 XML 值存储为 Python 列表

c# - 从 xml 和 c# 创建具有层次结构的动态对象

php - 在 PHP 中使用 XSD 解析 XML

android - 显示不支持的自定义属性的错误

python - 编写 Python 工具将 XML 转换为 Python?

android - 如何将任意 XML 读入 Android 中的通用对象?

未启用使用架构的 Java XML 解析验证

iphone - XML特殊字符解析

excel - 通过 VBA 将目录中的所有 XML 文件转换为 XLS