Skip to content

Commit a18c49c

Browse files
committed
Fix for single and multiline comments
1 parent a249405 commit a18c49c

3 files changed

Lines changed: 49 additions & 0 deletions

File tree

bin/parser.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ var buildOptions = function (options){
4343
var getTraversalObj =function (xmlData,options){
4444
options = buildOptions(options);
4545
//xmlData = xmlData.replace(/>(\s+)/g, ">");//Remove spaces and make it single line.
46+
xmlData = xmlData.replace(/<!--(.|\n)*?-->/g, "");//Remove single and multiline comments
4647
var tags = getAllMatches(xmlData,tagsRegx);
4748
var xmlObj = new xmlNode('!xml');
4849
var currentNode = xmlObj;

spec/cdata_spec.js

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,4 +74,43 @@ describe("XMLParser", function () {
7474
result = validator.validate(xmlData);
7575
expect(result).toBe(true);
7676
});
77+
78+
it("should ignore comment", function () {
79+
var xmlData = "<rootNode><!-- <tag> - - --><tag>1</tag><tag>val</tag></rootNode>";
80+
81+
var expected = {
82+
"rootNode": {
83+
"tag": [1, "val"]
84+
}
85+
};
86+
87+
var result = parser.parse(xmlData, {
88+
ignoreTextNodeAttr: false
89+
});
90+
91+
expect(result).toEqual(expected);
92+
93+
var result = validator.validate(xmlData);
94+
expect(result).toBe(true);
95+
});
96+
97+
it("should ignore multiline comments", function () {
98+
var xmlData = "<rootNode><!-- <tag> - - \n--><tag>1</tag><tag>val</tag></rootNode>";
99+
100+
var expected = {
101+
"rootNode": {
102+
"tag": [1, "val"]
103+
}
104+
};
105+
106+
var result = parser.parse(xmlData, {
107+
ignoreTextNodeAttr: false
108+
});
109+
110+
expect(result).toEqual(expected);
111+
112+
var result = validator.validate(xmlData);
113+
expect(result).toBe(true);
114+
});
115+
77116
});

spec/validator_spec.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,15 @@ describe("XMLParser", function () {
120120
expect(result).toBe(true);
121121
});
122122

123+
124+
it("should validate xml with comment", function () {
125+
var xmlData = "<rootNode><!-- <tag> - - \n--><tag>1</tag><tag>val</tag></rootNode>";
126+
127+
var result = validator.validate(xmlData);
128+
expect(result).toBe(true);
129+
});
130+
131+
123132
it("should not validate xml with comment in a open tag", function () {
124133
var xmlData = "<rootNode<!-- <tag> -- -->><tag>1</tag><tag>val</tag></rootNode>";
125134

0 commit comments

Comments
 (0)