XSL 변환에 사용할 네임 스페이스가 포함 된 XML 문자열로 읽으십시오.

StackOverflow https://stackoverflow.com/questions/121309

  •  02-07-2019
  •  | 
  •  

문제

ASP.NET 2.0 웹 사이트에는 잘 구성된 XML을 나타내는 문자열이 있습니다. 현재 XMLDocument 객체를 만들고 웹 양식으로 표시를 위해 XSL 변환을 실행하고 있습니다. XML 입력에 네임 스페이스가 포함되기 시작할 때까지 모든 것이 정상적으로 작동했습니다.

이 문자열에서 어떻게 읽고 네임 스페이스를 허용하려면 어떻게해야합니까?

아래에 현재 코드를 포함 시켰습니다. 문자열 소스는 WordPress RSS 피드의 HTML 인코딩 노드에서 나옵니다.

XPathNavigator myNav= myPost.CreateNavigator();
XmlNamespaceManager myManager = new XmlNamespaceManager(myNav.NameTable);
myManager.AddNamespace("content", "http://purl.org/rss/1.0/modules/content/");
string myPost = HttpUtility.HtmlDecode("<post>" +
    myNav.SelectSingleNode("//item[1]/content:encoded", myManager).InnerXml +
    "</post>");
XmlDocument myDocument = new XmlDocument();
myDocument.LoadXml(myPost.ToString());

오류는 마지막 줄에 있습니다.

"System.xml.xmlexception : 'w'는 선언되지 않은 네임 스페이스입니다. 12 행, 위치 201.에서 System.xml.xmltextreaderimpl.throw (예외 E) ..."...

도움이 되었습니까?

해결책

Gut Feel- // 컨텐츠에 선언 된 네임 스페이스 중 하나 : 인코딩이 삭제되고 있습니다 (아마도 문자 그럴 .innerxml 속성을 사용하기 때문에)

Mynav Dom에서 'W'네임 스페이스를 평가하는 것은 무엇입니까? 게시물 노드에 xmlns : w =를 추가하려고합니다. 아마도 다른 사람들도있을 것입니다.

다른 팁

코드가 옳습니다.

문제는 아마도로드하려는 XML 문서에있을 것입니다. XML 문서에 접두사를 선언하지 않고 "W"접두사가있는 요소가 있어야합니다.

예를 들어, 당신은 다음과 같아야합니다.

<test xmlns:w="http://...">
  <w:elementInWNamespace />
</test>

(귀하의 문서는 아마도 누락되었을 것입니다 xmlns:w="http://")

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top