programing

':' 문자(16진수 값 0x3A)는 이름에 포함할 수 없습니다.

topblog 2023. 9. 20. 20:03
반응형

':' 문자(16진수 값 0x3A)는 이름에 포함할 수 없습니다.

다음과 같은 요소가 포함된 xml 파일이 있습니다.

<ab:test>Str</ab:test>  

코드를 사용하여 액세스하려고 할 때:

XElement tempElement = doc.Descendants(XName.Get("ab:test")).FirstOrDefault();

이런 오류가 발생하고 있습니다.

시스템.웹.서비스.프로토콜.SoapException:서버에서 요청을 처리할 수 없습니다. ---> 시스템.Xml.Xml 예외:':' 문자(16진수 값 0x3A)는 이름에 포함할 수 없습니다.

어떻게 접속해야 합니까?

네임스페이스를 사용하려면 LINQ to XML을 사용하는 것이 매우 쉽습니다.

XNamespace ab = "http://whatever-the-url-is";
XElement tempElement = doc.Descendants(ab + "test").FirstOrDefault();

찾아보세요.xmlns:ab=...문서에서 섹션을 참조하여 어떤 네임스페이스 URI "ab"이 참조하는지 확인합니다.

네임스페이스를 에 넣으십시오.{...}다음과 같습니다.

string xfaNamespace = "{http://www.xfa.org/schema/xfa-template/2.6/}";

저도 같은 실수를 하고 있었습니다.내가 코드를 추가하는 걸 발견했어요

var ab = "http://whatever-the-url-is";

... 하지만 ab은 끈으로 결정되었습니다.이로 인해 OP에서 보고된 오류가 발생했습니다.VAR 키워드를 사용하는 대신 실제 데이터 타입의 XNamespace를 사용했습니다...

XNamespace ab = "http://whatever-the-url-is";

... 문제는 사라졌습니다.

네임스페이스를 고려하여 시도하려는 Get 메서드의 오버로드가 있습니다.시도해 보기:

XElement tempElement = doc.Descendants(XName.Get("test", "ab")).FirstOrDefault();

문서에서 네임스페이스 가져오기 시도

var ns = doc.Root.Name.Namespace;

삭제중AndroidManifest.xml그리고.AndroidManifest.xml.DISABLED나를 위해 일했습니다.

네임스페이스에 ':' 문자가 포함되어 있으면 문제가 발생합니다.예:

<?xml version="1.0"?>
  <SAMLConfiguration xmlns="urn:componentspace:SAML:2.0:configuration">
    <ServiceProvider Name="http://avanteam"
      Description="Avanteam Service Provider"
      AssertionConsumerServiceUrl="SAML/AssertionConsumerService"
      LocalCertificateFile="Certificates\sp.pfx"
      LocalCertificatePassword="password"/>
  </SAMLConfiguration>

모든 경우에 효과적인 해결책은GetName예를 들어 메소드XNamespace. 기본 네임스페이스가 있는 예:

var ns = doc.Root.GetDefaultNamespace();
var serviceProviderNode = doc.Element(ns.GetName("SAMLConfiguration"))?.Element(ns.GetName("ServiceProvider"));

언급URL : https://stackoverflow.com/questions/2575546/the-character-hexadecimal-value-0x3a-cannot-be-included-in-a-name

반응형