【问题标题】:How to parse a value from an XML tag in C language?如何从 C 语言中的 XML 标签中解析一个值?
【发布时间】:2009-10-03 21:04:01
【问题描述】:

我将此字符串作为输入“<operator value=1/>”。 如何在 C 中解析这个字符串以获取“1”?

【问题讨论】:

  • 这不是一个格式良好的 XML,顺便说一句。属性值应该用引号括起来。
  • 可能不是 xml。字符串应该是 Xml 的 sn-p 吗?还是一些遗产,比如 sgml ?

标签: c xml parsing


【解决方案1】:

如果你知道那正是你总是会得到的字符串类型,你可以使用sscanf()

int value;
if(sscanf(theString, "<operator value=%d/>", &value) == 1)
    ;  // parsing succeeded, use value
else
    ;  // parsing failed

如果您要接收更复杂的输入,我建议使用 XML 解析库,例如 expatTinyXML(需要 C++)。

【讨论】:

  • 但我需要提取“1”。该值可能会不时变化。所以字符串看起来一样,但值可以改变。我仍然可以使用 sscanf 来检索 = 和 / 之间的任何内容吗?
  • 如果可以的话,我会额外给你 1 分来检查 sscanf() 的返回值
  • @goe:是的,如果您要查找的值是一个整数,这将接受任何整数来代替“1”。如果您正在寻找一般的字符串,您将不得不寻找更复杂的东西。
  • 所以我做不到:sscanf(theString, "", &string)
【解决方案2】:

我假设您在不使用任何库的情况下解析字符串,并且该字符串可能不合法。我曾经在解析sgml时遇到过这个问题。

有几种方法可以做到这一点。您可以使用 strstok 拆分字符串以找到值 1,然后使用 atoi 进行转换。

我建议您使用正则表达式库来提取字符串。它将处理更多的边界情况。

【讨论】:

    猜你喜欢
    • 2010-12-03
    • 2016-04-24
    • 1970-01-01
    • 2015-07-20
    • 2014-06-04
    • 1970-01-01
    • 1970-01-01
    • 2018-10-23
    • 1970-01-01
    相关资源
    最近更新 更多