当前位置: 首页 > 面试题库 >

Golang:解析组的XML元素值和属性

公羊英达
2023-03-14
问题内容

我有这样的XML结构:

<RootLevel status="new" timestamp="1383259529" xmlns="http://someplace.com">
    <Item active="1" status="new" itemid="451254">
        <SubItem active="1" recent="false" usertext="No idea" id="78421">
            <SubItemField active="1" ready="no" type="1">1.4</SubItemField>
            <SubItemField active="1" ready="yes" type="2">4.5</SubItemField>
        </SubItem>
    </Item>
</RootLevel>

我不知道如何收集SubItemField元素的值和属性,我的代码是这样的:

type RootLEvel struct {
    XMLName xml.Name `xml:"RootLevel"`
    ...
    Item    []Item
}

type Item struct {
    ...
    SubItem   []SubItem
}

type SubItem struct {
    ...
    SubItemField    []SubItemField
}

type SubItemField struct {
    Active bool `xml:"active,attr"`
    Ready string `xml:"ready,attr"`
}

我需要属性和值,但是获取我知道的值的唯一方法就是使用

SubItemField  []float32

而不是我的自定义类型。我正在使用xml.Unmarshal btw。

任何想法?

谢谢。


问题答案:

我想出了如何做到这一点,我只需要在结构中添加一个匹配的新属性即可,xml:",chardata"如下所示:

type SubItemField struct {
    Value  float32 `xml:",chardata"`
    Active bool    `xml:"active,attr"`
    Ready  string  `xml:"ready,attr"`
}

我希望这可以帮助某人,因为没有相关文档或示例。



 类似资料:
  • 问题内容: 有没有一种方法可以解组具有动态属性的XML标签(我不知道每次都会获得哪些属性)。 也许尚不支持。请参阅问题3633:encoding / xml:支持收集所有属性 就像是 : 问题答案: 您需要实现自己的XMLUnmarshaler 输出 http://play.golang.org/p/9ZrpIT32o_

  • 问题内容: 场景:我正在尝试解析一个XML结构,但我不知道如何在xml属性值包含文本和更多嵌套值的情况下建立结构。所有其他属性都已正确设置,我不确定是否需要获取源的值并创建一个单独的解析器来检索元素的值。 编辑: 我正在尝试将源解析为以下形式的字符串:你好%{first_name}%{last_name} 用当前结构解组xml字符串将返回一个空结构 使用innerxml的@plato将源设置为:

  • 问题内容: 我正在使用的某些SVG / XML文件的属性名称中带有破折号和冒号-例如: 我正在尝试弄清楚如何使用的软件包对这些属性进行编组。虽然虚线属性有效,但带有冒号的属性不起作用: [ 请参阅此处的实时示例 ] 这些似乎是法律属性名称;任何想法如何提取一个?谢谢。 问题答案: 您的示例片段不太正确,因为它不包含前缀的XML名称空间绑定。您可能想要的是: 您可以使用名称空间URL解组此属性: 这

  • 问题内容: 假设以下xml元素具有属性和浮点值: 为了解组它,我应该如何定义我的结构? XMLName属性的用法使我感到困惑。什么时候应该将其放置在结构中,何时将其作为标签包装? 问题答案: 在下面,您可以找到解组给定数据的代码。 在删除空格之前,无法正确解组浮点值。 可以使用“,chardata”注释引用标记的内容。 您无需在结构中指定字段,只要它不模糊应使用哪种结构即可。

  • 问题内容: 我需要解析一个连续的格式良好的XML元素流,仅向其提供一个已经构造的对象。这些元素没有包含在根元素中,也没有以XML标头开头,例如,但它们都是有效的XML。 使用Java 类是行不通的,因为XML Reader希望从封闭的根元素开始解析格式良好的XML。因此,它只是读取流中的第一个元素(它被视为根元素),而在下一个元素中失败,使用典型 org.xml.sax.SAXParseExcep

  • 问题内容: 抱歉,如果还有其他地方,我发现了很多类似的示例,但无法将其用于我的数据。2天后,我需要一个答案:( 基本上有一个SQL Server表,其中的列包含XML数据。此数据包含我需要提取的值。 这是我的XML。 我需要能够提取与字段名称关联的值。 因此,从本质上讲,我想浏览XML以找到具有的节点并返回或等效值。 下面是我自己编写的代码,这些代码提取了值,但是问题是XML有时以不同的顺序排列,