문자열로 가져올 때 다른 문자와 함께 '\'가있는 xml 노드에서 내부 텍스트를 가져 오는 방법

Sreejith

안녕하세요, Oracle 데이터베이스에 varchar2로 저장된 xml 스크립트에서 innertext를 추출하는 데 문제가 있습니다. 가져 오는 동안 다음 형식으로 xml을 가져옵니다.

    "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<SpecificAction xmlns=\"http://www.xyz.com/schemas/core/caut\">action to take</SpecificAction>"

다음 xml은 아래 코드를 사용하여 가져옵니다.

    instance.cautDescription = records.GetStringOrDefault("SPEC_ACTION");

SPEC_ACTION 필드는 VARCHAR2 (4000 BYTE) 유형입니다.

데이터베이스의 xml에 \ 문자가 있기 때문에 태그로 내부 텍스트를 추출 할 수 없습니다. 내부 텍스트를 가져 오기 위해 다음 코드를 시도했습니다.

    string s = instance.cautDescription;
    XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.LoadXml(s);

            XmlNode specificAction = xmlDoc.DocumentElement.SelectSingleNode("/SpecificAction");
            string specific = specificAction.InnerText;
            xmlString = specificAction.InnerText;

            return xmlString;

내 코드가 null을 반환하는 경우이를 피할 수 있다면 어떤 지원이 정말 도움이 될 것입니다.

har07

이것은 기본 네임 스페이스가있는 XML로 작업 할 때 발생하는 전형적인 문제입니다. XML에서 기본 네임 스페이스 (예 : 접두사가없는 네임 스페이스)가 있으면 접두사가 xmlns="...."없는 모든 요소가 기본 네임 스페이스로 간주됩니다. 그러나 XPath에서 접두사가없는 모든 요소에는 네임 스페이스가 없습니다. 이 다른 패러다임을 연결하려면 기본 네임 스페이스 URI를 가리키는 접두사를 선언하고 XPath에서 사용해야합니다.

var nsManager = new XmlNamespaceManager(xmlDoc.NameTable);
nsManager.AddNamespace("ns", xmlDoc.DocumentElement.NamespaceURI);
XmlNode specificAction = xmlDoc.DocumentElement.SelectSingleNode("/ns:SpecificAction", nsManager);
string specific = specificAction.InnerText;

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관