Skip to content

Bugs and invalid structs #5

Description

@JamesCullum

Hey wicast,

Thanks for the good idea for this tool.
However, I want to parse this XML. I use the command xmljson2struct.exe -f "C:\XXX\com.redhat.rhsa-all.xml" > "C:\XXX\struct.txt", which returns

type Oval_definitions struct {
	Definition	[]Definition	`xml:"definitions>definition"`
	Advisory	[]Advisory	`xml:"definitions>definition>metadata>advisory"`
	Platform	[]string	`xml:"definitions>definition>metadata>affected>platform"`
	Description	[]string	`xml:"definitions>definition>metadata>description"`
	CriteriaCriteriaDefinitionDefinitions	[][]Criteria	`xml:"definitions>definition>criteria>criteria"`
	CriterionCriteriaCriteriaCriteriaDefinitionDefinitions	[][][][]Criterion	`xml:"definitions>definition>criteria>criteria>criteria>criterion"`
	CriterionCriteriaCriteriaDefinitionDefinitions	[][][]Criterion	`xml:"definitions>definition>criteria>criteria>criterion"`
	State	[]State	`xml:"tests>rpminfo_test>state"`
	Xsi	string	`xml:"xsi,attr"`
	Schema_version	string	`xml:"generator>schema_version"`
	Version	[]Version	`xml:"states>rpminfo_state>version"`
	CriteriaCriteriaCriteriaDefinitionDefinitions	[][][]Criteria	`xml:"definitions>definition>criteria>criteria>criteria"`
	CriteriaCriteriaCriteriaCriteriaDefinitionDefinitions	[][][][]Criteria	`xml:"definitions>definition>criteria>criteria>criteria>criteria"`
	CriterionCriteriaCriteriaCriteriaCriteriaDefinitionDefinitions	[][][][][]Criterion	`xml:"definitions>definition>criteria>criteria>criteria>criteria>criterion"`
	Object	[]Object	`xml:"tests>rpminfo_test>object"`
	Red-Def	string	`xml:"red-def,attr"`
	Severity	[]string	`xml:"definitions>definition>metadata>advisory>severity"`
	Reference	[][]Reference	`xml:"definitions>definition>metadata>reference"`
	Timestamp	string	`xml:"generator>timestamp"`
	Name	[]string	`xml:"objects>rpminfo_object>name"`
	Evr	[]Evr	`xml:"states>rpminfo_state>evr"`
	Affected	[]Affected	`xml:"definitions>definition>metadata>affected"`
	Criteria	[]Criteria	`xml:"definitions>definition>criteria"`
	Rpminfo_state	[]Rpminfo_state	`xml:"states>rpminfo_state"`
	Cve	[][]Cve	`xml:"definitions>definition>metadata>advisory>cve"`
	Affected_cpe_list	[]string	`xml:"definitions>definition>metadata>advisory>affected_cpe_list"`
	Xmlns	string	`xml:"xmlns,attr"`
	Product_name	string	`xml:"generator>product_name"`
	Product_version	string	`xml:"generator>product_version"`
	SchemaLocation	string	`xml:"schemaLocation,attr"`
	Updated	[]Updated	`xml:"definitions>definition>metadata>advisory>updated"`
	Criterion	[][]Criterion	`xml:"definitions>definition>criteria>criterion"`
	Unix-Def	string	`xml:"unix-def,attr"`
	Rights	[]string	`xml:"definitions>definition>metadata>advisory>rights"`
	Issued	[]Issued	`xml:"definitions>definition>metadata>advisory>issued"`
	Cpe	[]string	`xml:"definitions>definition>metadata>advisory>affected_cpe_list>cpe"`
	Title	[]string	`xml:"definitions>definition>metadata>title"`
	Oval	string	`xml:"oval,attr"`
	Rpminfo_object	[]Rpminfo_object	`xml:"objects>rpminfo_object"`
	Signature_keyid	[]Signature_keyid	`xml:"states>rpminfo_state>signature_keyid"`
	Bugzilla	[][]Bugzilla	`xml:"definitions>definition>metadata>advisory>bugzilla"`
	Rpminfo_test	[]Rpminfo_test	`xml:"tests>rpminfo_test"`
	Content_version	string	`xml:"generator>content_version"`
}

type Advisory struct {
	From	string	`xml:"from,attr"`
}
type CriteriaCriteriaCriteriaCriteriaDefinitionDefinitions struct {
	Operator	string	`xml:"operator,attr"`
}
type Rpminfo_state struct {
	Id	string	`xml:"id,attr"`
	Version	string	`xml:"version,attr"`
}
type Signature_keyid struct {
	Text	string	`xml:",chardata"`
	Operation	string	`xml:"operation,attr"`
}
type Issued struct {
	Date	string	`xml:"date,attr"`
}
type Reference struct {
	Ref_id	string	`xml:"ref_id,attr"`
	Ref_url	string	`xml:"ref_url,attr"`
	Source	string	`xml:"source,attr"`
}
type Criteria struct {
	Operator	string	`xml:"operator,attr"`
}
type CriterionCriteriaCriteriaDefinitionDefinitions struct {
	Comment	string	`xml:"comment,attr"`
	Test_ref	string	`xml:"test_ref,attr"`
}
type Evr struct {
	Datatype	string	`xml:"datatype,attr"`
	Operation	string	`xml:"operation,attr"`
	Text	string	`xml:",chardata"`
}
type Updated struct {
	Date	string	`xml:"date,attr"`
}
type Bugzilla struct {
	Href	string	`xml:"href,attr"`
	Id	string	`xml:"id,attr"`
	Text	string	`xml:",chardata"`
}
type CriterionCriteriaCriteriaCriteriaDefinitionDefinitions struct {
	Comment	string	`xml:"comment,attr"`
	Test_ref	string	`xml:"test_ref,attr"`
}
type Rpminfo_test struct {
	Check	string	`xml:"check,attr"`
	Comment	string	`xml:"comment,attr"`
	Id	string	`xml:"id,attr"`
	Version	string	`xml:"version,attr"`
}
type Rpminfo_object struct {
	Id	string	`xml:"id,attr"`
	Version	string	`xml:"version,attr"`
}
type Object struct {
	Object_ref	string	`xml:"object_ref,attr"`
}
type Definition struct {
	Version	string	`xml:"version,attr"`
	Class	string	`xml:"class,attr"`
	Id	string	`xml:"id,attr"`
}
type Cve struct {
	Text	string	`xml:",chardata"`
	Impact	string	`xml:"impact,attr"`
	Public	string	`xml:"public,attr"`
	Cvss2	string	`xml:"cvss2,attr"`
	Cwe	string	`xml:"cwe,attr"`
	Cvss3	string	`xml:"cvss3,attr"`
	Href	string	`xml:"href,attr"`
}
type Affected struct {
	Family	string	`xml:"family,attr"`
}
type Criterion struct {
	Comment	string	`xml:"comment,attr"`
	Test_ref	string	`xml:"test_ref,attr"`
}
type CriteriaCriteriaDefinitionDefinitions struct {
	Operator	string	`xml:"operator,attr"`
}
type CriteriaCriteriaCriteriaDefinitionDefinitions struct {
	Operator	string	`xml:"operator,attr"`
}
type CriterionCriteriaCriteriaCriteriaCriteriaDefinitionDefinitions struct {
	Comment	string	`xml:"comment,attr"`
	Test_ref	string	`xml:"test_ref,attr"`
}
type State struct {
	State_ref	string	`xml:"state_ref,attr"`
}
type Version struct {
	Text	string	`xml:",chardata"`
	Operation	string	`xml:"operation,attr"`
}

The result is non-functional.
It contains dashes "-", which are invalid for structs (f.e. Oval_definitions.Red-Def).
When I changed those to underscores, the execution is prevented by

panic: main.Oval_definitions field "Affected" with tag "definitions>definition>metadata>affected" conflicts with field "Platform" with tag "definitions>definition>metadata>affected>platform"

after changing that, I get

panic: main.Oval_definitions field "CriterionCriteriaCriteriaCriteriaDefinitionDefinitions" with tag "definitions>definition>criteria>criteria>criteria>criterion" conflicts with field "CriteriaCriteriaDefinitionDefinitions" with tag "definitions>definition>criteria>criteria"

Which is a very tedious task to do for every field.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions