자바 스크립트 (Spidermonkey)의 서버 측 구현에서 웹 서비스에서 반환 된 XML 청크를 복사하고 네임 스페이스 특성을 제거하려고합니다.E4X 복사 된 XML에서 네임 스페이스 특성을 제거하십시오.
새 XML이 더 간단하고 네임 스페이스가 필요하지 않으므로 복사 된 XML에서 새 XML 구조를보다 명확하게 유지하기 위해 제거 된 네임 스페이스 참조가 있어야합니다.
setNamespace(), setNamespace (새 Namespace()), removeNamespace() 등을 시도했지만 복사 된 XML에 xmlns 특성이 나타나지 않도록 할 수 없습니다. .. 당신이 알 수 있다면 내가) (setNamespace를 호출하면
var ns = new Namespace('', 'urn://foo.com/bar');
var xml = <root>
<addrInfo>
<custAddr xmlns="urn://foo.com/bar">
<addr>123 Main</addr>
<city>My Town</city>
<stateProv>XX</stateProv>
<postalCode>12345</postalCode>
</custAddr>
</addrInfo>
</root>;
xml.addrInfo.ns::custAddr.setNamespace(new Namespace());
var newXml = xml.addrInfo.custAddr;
console.log('namespace: ' + newXml.namespace());
console.log(newXml);
가, 그때 더 네임 스페이스 참조하여 custAddr 노드를 참조 할 수 있어요 그래서처럼이 역할 : 여기
은 예입니다 제거 .. 심지어 newXml 변수에 네임 스페이스()를 호출하면 빈 문자열을 생성합니다 ..하지만 내가 이해하지 못하는 것은 newXml에 custAddr에서 복사 된 XML 여전히의 xmlns는 XML의 속성이 있습니다 이유 :namespace:
<custAddr xmlns="urn://foo.com/bar">
<addr>123 Main</addr>
<city>My Town</city>
<stateProv>XX</stateProv>
<postalCode>12345</postalCode>
</custAddr>
난 그냥 xmlns 특성과 깨끗한 custAddr 요소를 원한다.
내가 문자열 조작/정규식/etc를 할 수 있고 그런 식으로 속성을 제거 할 수 있다는 것을 알았지 만 그것을 제거하는 적절한 e4x 방법이 있다면 어떻게 알고 싶습니다.
도움을 주시면 감사하겠습니다.
우리는 실제로 E4X를 제거했습니다. 새로운 SpiderMonkey 버전으로 이동하는 것도 고려해야합니다. https://developer.mozilla.org/en-US/docs/SpiderMonkey/24 – evilpie