xml에 루트 노드에 대한 네임 스페이스가있을 때 XElement 및 XName이 충돌 함

남자

안녕하세요 저는 xml 파일을 다루고 있었고 해결하는 데 약간의 문제가 있음을 알 렸습니다.

루트 노드로 시작하고 이름을 변경할 수있는 다른 자식 노드가있는 Xml이 있습니다. 예를 들면 다음과 같습니다.

<root>
  <Child1>
</root>

그래서 "Child1"을 "Child2"또는 "Child3"으로 변경할 수 있다는 점을 감안하면이 linq가 내 방식대로 이름을 추출 할 수 있도록했습니다.

먼저:

XElement root = XElement.Parse(xml);

var childType = root.Descendants().First(x => x.Name == "Child1" || x.Name == "Child2"|| x.Name == "Child3").Name;

따라서 위와 같이 네임 스페이스가없는 xml이 있으면 제대로 작동하고 노드 태그에서 이름을 추출 할 수 있습니다.

하지만 루트 태그에 네임 스페이스가 있으면 오류가 발생합니다.

<root xmlns="namespace">
  <Child1>
</root>

동일한 linq를 통과하는 XML은 다음을 던집니다.

시퀀스에 일치하는 요소가 없습니다.

Sergey Berezovskiy

귀하의 root요소는 정의 된 네임 스페이스 (있다 xmlns="namespace", 따라서 모든 자식 요소가 같은 네임 스페이스와 연관됩니다). 즉, Child1요소는 동일한 네임 스페이스에 있으며 이름에는 네임 스페이스 접두사와 로컬 이름 ( "Child1")이 모두 포함됩니다 . 따라서 Child1요소를 검색 할 때 전체 이름을 지정할 수 있습니다 .

var ns = root.GetDefaultNamespace();
var childType = root.Descendants()
   .First(x => x.Name == ns +"Child1" || x.Name == ns + "Child2"|| x.Name == ns + "Child3")
   .Name;

또는 찾을 수 있습니다 x.Name.LocalName(하지만 Child1다른 네임 스페이스의 요소 가있을 가능성은 적지 만이 접근 방식을 권장하지는 않습니다 ).

참고 : Child요소에 닫는 태그가 없습니다 (오타 일 가능성이 있음).

추가 자료 : Xml 네임 스페이스

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

C 및 C ++에서 네임 스페이스 충돌을 피하는 방법

분류에서Dev

네임 스페이스 및 함수 이름 충돌

분류에서Dev

파일 속성에 대한 권한을 루트 14.10으로 설정 및 변경할 때 노틸러스가 충돌합니다.

분류에서Dev

POSIX 셸의 함수 및 변수에 대한 별도의 네임 스페이스

분류에서Dev

코드 네임 1이 기기에서만 충돌 함

분류에서Dev

루트 노드에 여러 유형이있을 수있는 경우 루트 노드에 네임 스페이스 추가

분류에서Dev

동일한 C 라이브러리에 대한 경로 / 네임 스페이스 충돌

분류에서Dev

XML-루트에없는 네임 스페이스 추가

분류에서Dev

네임 스페이스 클래스 이름에 충돌이 있습니다.

분류에서Dev

네임 스페이스 및 포트 내에서 포드 통신을 제한하는 네트워크 정책

분류에서Dev

네임 스페이스 충돌. 다른 디렉토리에 대한 자체 spl_autoload_register

분류에서Dev

이러한 XElement 컬렉션이 XElement (XName, Object [])에서 다르게 취급되는 이유는 무엇입니까?

분류에서Dev

테스트 된 한 PC에 대해 시작시 WPF 앱이 충돌 함

분류에서Dev

XML에서 InputStream을 열 때 Android 앱이 충돌 함

분류에서Dev

런타임에 스프라이트를 추가 할 때 XNA 4.0 게임 충돌

분류에서Dev

XML에서 네임 스페이스가 지정된 루트 노드의 요점은 무엇이며 이러한 네임 스페이스는 어디에 정의됩니까?

분류에서Dev

노트북에서 듀얼 모니터를 사용할 때 화면 깜박임 후 드라이버 충돌

분류에서Dev

XML 스키마 네임 스페이스 springframework 컨텍스트에 대한 Spring NamespaceHandler를 찾을 수 없습니다.

분류에서Dev

네임 스페이스 요소가 다른 단일 루트 요소에 대한 Xpath 유효성 검사

분류에서Dev

Oracle에서 네임 스페이스가있는 CLOB 열에 xml 노드 삽입

분류에서Dev

ifup, ifdown은 Ubuntu 및 Raspbian에서 네트워크 네임 스페이스를 사용할 때 잘못된 인터페이스 상태를 가져옵니다.

분류에서Dev

XML에서 XSD 생성 및 네임 스페이스 XSLT 추가

분류에서Dev

기존 xml에 네임 스페이스 및 별칭 추가

분류에서Dev

PHP의 xml 노드에 네임 스페이스 속성 추가

분류에서Dev

XSLT-노드 XML에 네임 스페이스 추가

분류에서Dev

스크롤 및 CSS 스크롤 스냅에 키보드 이벤트를 동시에 사용할 때 충돌

분류에서Dev

루트 태그에있는 xslt의 네임 스페이스

분류에서Dev

충돌하는 기호가있을 때 하나 이상의 네임 스페이스를 사용합니까?

분류에서Dev

Python에서 네임 스페이스 XML에 대한 XPath?

Related 관련 기사

  1. 1

    C 및 C ++에서 네임 스페이스 충돌을 피하는 방법

  2. 2

    네임 스페이스 및 함수 이름 충돌

  3. 3

    파일 속성에 대한 권한을 루트 14.10으로 설정 및 변경할 때 노틸러스가 충돌합니다.

  4. 4

    POSIX 셸의 함수 및 변수에 대한 별도의 네임 스페이스

  5. 5

    코드 네임 1이 기기에서만 충돌 함

  6. 6

    루트 노드에 여러 유형이있을 수있는 경우 루트 노드에 네임 스페이스 추가

  7. 7

    동일한 C 라이브러리에 대한 경로 / 네임 스페이스 충돌

  8. 8

    XML-루트에없는 네임 스페이스 추가

  9. 9

    네임 스페이스 클래스 이름에 충돌이 있습니다.

  10. 10

    네임 스페이스 및 포트 내에서 포드 통신을 제한하는 네트워크 정책

  11. 11

    네임 스페이스 충돌. 다른 디렉토리에 대한 자체 spl_autoload_register

  12. 12

    이러한 XElement 컬렉션이 XElement (XName, Object [])에서 다르게 취급되는 이유는 무엇입니까?

  13. 13

    테스트 된 한 PC에 대해 시작시 WPF 앱이 충돌 함

  14. 14

    XML에서 InputStream을 열 때 Android 앱이 충돌 함

  15. 15

    런타임에 스프라이트를 추가 할 때 XNA 4.0 게임 충돌

  16. 16

    XML에서 네임 스페이스가 지정된 루트 노드의 요점은 무엇이며 이러한 네임 스페이스는 어디에 정의됩니까?

  17. 17

    노트북에서 듀얼 모니터를 사용할 때 화면 깜박임 후 드라이버 충돌

  18. 18

    XML 스키마 네임 스페이스 springframework 컨텍스트에 대한 Spring NamespaceHandler를 찾을 수 없습니다.

  19. 19

    네임 스페이스 요소가 다른 단일 루트 요소에 대한 Xpath 유효성 검사

  20. 20

    Oracle에서 네임 스페이스가있는 CLOB 열에 xml 노드 삽입

  21. 21

    ifup, ifdown은 Ubuntu 및 Raspbian에서 네트워크 네임 스페이스를 사용할 때 잘못된 인터페이스 상태를 가져옵니다.

  22. 22

    XML에서 XSD 생성 및 네임 스페이스 XSLT 추가

  23. 23

    기존 xml에 네임 스페이스 및 별칭 추가

  24. 24

    PHP의 xml 노드에 네임 스페이스 속성 추가

  25. 25

    XSLT-노드 XML에 네임 스페이스 추가

  26. 26

    스크롤 및 CSS 스크롤 스냅에 키보드 이벤트를 동시에 사용할 때 충돌

  27. 27

    루트 태그에있는 xslt의 네임 스페이스

  28. 28

    충돌하는 기호가있을 때 하나 이상의 네임 스페이스를 사용합니까?

  29. 29

    Python에서 네임 스페이스 XML에 대한 XPath?

뜨겁다태그

보관