2010-04-04 3 views
3

제목이 너무 짧아서 설명 할 수 없습니다 ...xmlns = "..."없이 XML 네임 스페이스 접두어를 사방에 사용하는 방법은 무엇입니까?

일부 응용 프로그램의 경우 네임 스페이스가 전혀 포함되지 않은 XML 파일을 작성하고 있습니다. 그 부분은 바꿀 수 없습니다. 하지만 이제는 내 응용 프로그램 정의 요소 이름을 사용하여 파일을 확장 할 예정이며 다른 네임 스페이스에 추가하려고합니다. 이를 위해, 결과는 다음과 같아야합니다

<doc xmlns:x="urn:my-app-uri"> 
    <a>existing element name</a> 
    <x:addon>my additional element name</x:addon> 
</doc> 

나는있는 XmlNamespaceManager를 사용하고에 접두사 "X"내 URI를 추가했습니다. 또한 각 요소 이름에 대해 각 CreateElement로 전달했습니다. 하지만이 얻을 수있는 가장 가까운이 있습니다 :

<doc> 
    <a>existing element name</a> 
    <addon xmlns="urn:my-app-uri">my additional element name</addon> 
</doc> 

아니면도

<x:addon xmlns:x="urn:my-app-uri">my additional element name</x:addon> 

그래서 요점은 내 URI가 내 추가 요소 하나 하나에 기록되어 있으며, 공통 접두사가 기록되지 않습니다 내가 가지고 싶은 문서 요소.

.NET에서 위의 XML 결과를 얻으려면 어떻게해야합니까? DOM 레벨 2 코어의 방법을 사용하여 일반적으로

답변

2

당신은 기대 :

doc.documentElement.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:x", "urn:my-app-uri"); 

루트 요소에 네임 스페이스 선언을 추가; DOM Level 3 LS에 지정된 네임 스페이스 알고리즘을 사용하여 직렬화 된 경우 해당 접두사는 새로운 xmlns 선언을 추가하지 않고 사용됩니다.

.NET의 XmlDocument가이 권리를 얻는 지 테스트하지는 못했지만 희망합니다.

관련 문제