노드가 네임 스페이스에 속하면 해당 노드는 기본적으로 동일한 네임 스페이스에 속합니다. 따라서 각 어린이에 xmlns
속성을 제공 할 필요가 없습니다.LINQ to XML : 자식 노드의 중복 네임 스페이스 특성 억제
그러나. 나는이 같은 두 개의 노드를 만들 경우
는 :
Dim parent = <parent xmlns="http://my.namespace.org"/>
Dim child = <child xmlns="http://my.namespace.org">value</child>
parent.Add(child)
Console.WriteLine(parent.ToString)
결과는 이것이다 :
<parent xmlns="http://my.namespace.org">
<child xmlns="http://my.namespace.org">value</child>
</parent>
하지만, 덜 편리한 방식으로 만드는 경우 :
Dim parent = <parent xmlns="http://my.namespace.org"/>
Dim child As New XElement(XName.Get("child", "http://my.namespace.org")) With {.Value = "value"}
parent.Add(child)
Console.WriteLine(parent.ToString)
결과가 더 바람직합니다.
<parent xmlns="http://my.namespace.org">
<child>value</child>
</parent>
분명히 훨씬 직관적이고 쉽게 코딩 할 수 있기 때문에 첫 번째 방법을 사용하는 것을 선호합니다. 방법 2를 사용하지 않는 또 다른 이유가 있습니다. XElement.Parse
으로 노드를 만들고, xmlns
속성을 포함하는 문자열을 파싱해야하는데, 방법 1과 완전히 동일한 결과를 생성합니다.
그래서 어떻게해야합니까? 방법 2의 예쁜 결과물을 얻었고, 방법 1처럼 노드를 만들었습니까? 내가 볼 수있는 유일한 옵션은 주어진 XElement를 복제하는 메소드를 만드는 것이며, 메소드 2 패턴에 따라 효과적으로 재 작성하지만 추한 것 같습니다. 나는 어떤 이유로 간과 한 좀 더 명백한 해결책을 찾고있다.
@GSerg : 아래 답변이 귀하의 질문에 대한 답변입니까? –