mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2025-10-16 12:05:41 +00:00
- [x] Use a meaningful title for the pull request. Include the name of the package modified.
- [x] Test the change in your own code. (Compile and run.)<br>
<s>@lorenzleutgeb Could you please do this as I don't use libxmljs at the moment.</s> [See below.](https://github.com/DefinitelyTyped/DefinitelyTyped/pull/28737#issuecomment-419709955)
- [x] Add or edit tests to reflect the change. (Run with `npm test`.)
- [x] Follow the advice from the [readme](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/README.md#make-a-pull-request).
- [x] Avoid [common mistakes](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/README.md#common-mistakes).
- [x] Run `npm run lint package-name` (or `tsc` if no `tslint.json` is present).
Select one of these and delete the others:
If changing an existing definition:
- [x] Provide a URL to documentation or source code which provides context for the suggested changes: 3cec662a9e...1699417611
69 lines
1.9 KiB
TypeScript
69 lines
1.9 KiB
TypeScript
import * as libxmljs from 'libxmljs';
|
|
|
|
const xml = '<?xml version="1.0" encoding="UTF-8"?>' +
|
|
'<root>' +
|
|
'<child foo="bar">' +
|
|
'<grandchild baz="fizbuzz">grandchild content</grandchild>' +
|
|
'</child>' +
|
|
'<sibling>with content!</sibling>' +
|
|
'</root>';
|
|
|
|
const xmlDoc = libxmljs.parseXml(xml);
|
|
|
|
// xpath queries
|
|
const gchild = xmlDoc.get('//grandchild')!;
|
|
|
|
console.log(gchild.text()); // prints "grandchild content"
|
|
|
|
const children = xmlDoc.root()!.childNodes();
|
|
const child = children[0] as libxmljs.Element;
|
|
|
|
console.log(child.attr('foo')!.value()); // prints "bar"
|
|
|
|
const parser = new libxmljs.SaxParser();
|
|
|
|
parser.on('startDocument', () => 0);
|
|
parser.on('startElement', () => 0);
|
|
|
|
const parser2 = new libxmljs.SaxPushParser();
|
|
|
|
// connect any callbacks here
|
|
parser2
|
|
.on('startDocument', () => 0)
|
|
.on('startElement', () => 0);
|
|
|
|
const xmlChunk = '';
|
|
|
|
while (xmlChunk) {
|
|
parser2.push(xmlChunk);
|
|
}
|
|
|
|
const doc = new libxmljs.Document();
|
|
((doc.node('root')
|
|
.node('child').attr({foo: 'bar'})
|
|
.node('grandchild', 'grandchild content').attr({baz: 'fizbuzz'})
|
|
.parent()
|
|
) as libxmljs.Element).parent()
|
|
.node('sibling', 'with content!');
|
|
|
|
const {name, externalId, systemId} = doc.getDtd();
|
|
|
|
const xmlWithNs = '<?xml version="1.0" encoding="UTF-8"?>' +
|
|
'<root>' +
|
|
'<child xmlns:a="http://test.com/test" foo="bar">' +
|
|
'<a:grandchild baz="fizbuzz">grandchild content</a:grandchild>' +
|
|
'</child>' +
|
|
'<sibling>with content!</sibling>' +
|
|
'</root>';
|
|
|
|
const xmlDocWithNs = libxmljs.parseXml(xmlWithNs);
|
|
|
|
// xpath queries
|
|
const gchildWithNs = xmlDocWithNs.get('//a:grandchild', {a: 'http://test.com/test'})!;
|
|
|
|
console.log(gchildWithNs.text()); // prints "grandchild content"
|
|
|
|
const validated: boolean = doc.validate(doc);
|
|
doc.validationErrors[0].message; // inherited from Error
|
|
doc.validationErrors[0].line;
|