큰 KML 파일 (> 3 MiBs)을 처리해야합니다. 이를 조사하기 위해서는 살펴볼 필요가 있지만 수동 탐색이 불가능 해지는 Style과 StyleMap 노드가 너무 많습니다. Node.js를 사용하여 불필요한 노드를 프로그래밍 방식으로 제거하기로 결정했습니다. 예를 들어 sax 또는 xmldom을 사용하여 Node.js로 XML 파일을 구문 분석하는 것은 다소 쉽습니다. 그러나 까다로운 부분은 특정 노드와 그 자식을 제외하고 다른 모든 노드를 유지하는 방법 인 것 같습니다. sax 출력은 XML이므로 모든 보관 된 노드, 해당 특성 및 하위를 처리해야하므로 다소 복잡한 작업이됩니다. 더 간단하고 강력한 솔루션이 있어야한다고 생각합니다. 어떤 제안과 코드 조각?Node.js를 사용하여 XML 노드를 필터링하는 방법은 무엇입니까?
0
A
답변
0
한 가지 방법은 xmldom과 xpath을 사용하는 것입니다. 먼저 xpath와 XPath 식을 사용하여 제거 할 노드를 가져옵니다. DOM 트리에서 제거 할 수있는 xmldom 노드 배열을 반환합니다. 예를 들어 모든 book
노드를 제거합니다 :
var xmldom = require('xmldom');
var xpath = require('xpath');
var parser = new xmldom.DOMParser();
var serializer = new xmldom.XMLSerializer();
var xmlIn = '<bookstore>' +
'<book>Animal Farm</book>' +
'<book>Nineteen Eighty-Four</book>' +
'<essay>Reflections on Writing</essay>' +
'</bookstore>';
var root = parser.parseFromString(xmlIn, 'text/xml');
var nodes = xpath.select('//book', root);
nodes.forEach(function (n) {
n.parentNode.removeChild(n);
});
var xmlOut = serializer.serializeToString(root);
그러나가, 네임 스페이스, 여러 XPath 식, 들여 쓰기 보존 처리하는 투쟁이다. 따라서 가중치를 높이기 위해 NPM 모듈 filterxml을 만들었습니다.
var filterxml = require('filterxml')
var patterns = ['//book'];
var namespaces = {};
filterxml(xmlIn, patterns, namespaces, function (err, xmlOut) {
console.log(xmlOut);
});
윌 출력 :
<bookstore><essay>Reflections on Writing</essay></bookstore>
관련 문제
- 1. PowerShell을 사용하여 XML 노드를 동적으로 필터링하는 방법은 무엇입니까?
- 2. Neo4J/Cypher : 경로의 노드를 필터링하는 방법은 무엇입니까?
- 3. xpath에서 필터를 기반으로 xml 노드를 필터링하는 방법
- 4. XML 노드를 삭제하는 방법은 무엇입니까?
- 5. XML 노드를 XML 행으로 피벗시키는 방법은 무엇입니까?
- 6. XSLT 1.0을 사용하여 두 xml 트리를 동시에 필터링하는 방법은 무엇입니까?
- 7. xml 노드를 동적으로 변경하는 방법은 무엇입니까?
- 8. CodeMirror 2 : xml 속성을 필터링하는 방법은 무엇입니까?
- 9. XML 파일에서 속성 값을 필터링하는 방법은 무엇입니까?
- 10. XML 노드를 별도의 노드로 분할하는 방법은 무엇입니까?
- 11. 트리 구조를 유지하면서 XML 노드 이름을 필터링하는 방법은 무엇입니까?
- 12. '노드를 엄격하게 소유'하는 노드 참조를 필터링하는 방법은 무엇입니까? (Drupal 7)
- 13. XML 파일에서 노드를 덮어 쓰는 방법은 무엇입니까?
- 14. jQuery로 XML 노드를 업데이트하는 방법은 무엇입니까?
- 15. XML 노드를 탐색하는 더 나은 방법은 무엇입니까?
- 16. 두 xml 노드를 비교하는 방법은 무엇입니까?
- 17. XML 노드를 새 값으로 업데이트하는 방법은 무엇입니까?
- 18. iPhone에서 XML 노드를 검색하고 표시하는 방법은 무엇입니까?
- 19. XML 문서에서 특정 노드를 삭제하는 방법은 무엇입니까?
- 20. XML 노드를 추가하고 삭제하는 방법은 무엇입니까?
- 21. 그루비 - 문서간에 XML 노드를 전송하는 방법은 무엇입니까?
- 22. XML 파일에서 노드를 삭제하는 방법은 무엇입니까?
- 23. xml 노드에 엔터티가 포함되어있는 경우 XML 노드를 검색하는 방법은 무엇입니까?
- 24. 하위 노드를 사용하여 XML 요소를 정렬하는 방법은 무엇입니까?
- 25. Item (#) 대신 baseName을 사용하여 XML 하위 노드를 선택하는 방법은 무엇입니까?
- 26. vb.net을 사용하여 xml 파일에서 값의 부모 노드를 얻는 방법은 무엇입니까?
- 27. PHP를 사용하여 특정 XML 노드를 삭제하고 편집하는 방법은 무엇입니까?
- 28. C 프로그램을 사용하여 XML 파일에서 노드를 제거하는 방법은 무엇입니까?
- 29. xslt를 사용하여 xml 노드를 특정 조건과 결합하는 방법은 무엇입니까?
- 30. PowerShell을 사용하여 XML 노드를 주석으로 처리하는 방법은 무엇입니까?
는 NPM에 모든 XML 파서 패키지를 검색, 그것은, 당신의 파일을 읽을 특정 노드를 제거, 파일을 봐라에 저장이 포함됩니다. 정확히 무엇을 요구하고 있습니까? – xDreamCoding
@xDreamCoding 감사합니다. 간단히 설명한 일반적인 접근 방식과 코드 조각을 찾고있었습니다. 특히 노드가 제거되어야하는 부분. 좀 더 구체적인 질문을 편집했습니다. 나는 [xpath] (https://www.npmjs.com/package/xpath)가 이것을 할 수 있음을 발견했다. 잘 작동한다면, 이것에 대한 npm 모듈을 구현할 것입니다. –
XML 파일을 변환하려고합니다. XSLT는 당신의 친구입니다. – Tomalak