텍스트가 아닌 XML 속성에 줄 바꿈이 포함 된 내용을 저장해야합니다. XSLT 1.0/ESXLT/XSLT 2.0에서 디코딩 할 수 있도록 메서드를 선택해야합니다.XML 속성에 개행 문자를 저장하는 방법은 무엇입니까?
최상의 인코딩 방법은 무엇입니까?
아이디어를 제안하거나 알려주십시오.
텍스트가 아닌 XML 속성에 줄 바꿈이 포함 된 내용을 저장해야합니다. XSLT 1.0/ESXLT/XSLT 2.0에서 디코딩 할 수 있도록 메서드를 선택해야합니다.XML 속성에 개행 문자를 저장하는 방법은 무엇입니까?
최상의 인코딩 방법은 무엇입니까?
아이디어를 제안하거나 알려주십시오.
준수하는 DOM API에는 수행 할 필요가 없습니다. 실제 개행 문자를 속성에 저장하기 만하면 API가 자체적으로 올바르게 인코딩합니다 (Canonical XML spec, section 5.2 참조). 당신이 당신의 자신의 인코딩 (즉, 속성 값을 저장하기 전에
와 \n
교체) 할 경우
는, API는 XML 파일에 

결과, 귀하의 의견 다시를 인코딩합니다.
하단은 문자열 값이 그대로 저장됩니다. 당신은 당신이 끼워 넣은 것을 꺼내지 만 간섭 할 필요는 없습니다.
... 일부 구현은 준수하지 않습니다. 예를 들어 속성 값에 &
문자를 인코딩하지만 줄 바꿈 문자 또는 탭은 잊어 버릴 수 있습니다. 이것은 간단히 newline을
으로 바꿀 수 없기 때문에 당신을 잃어 버리게 만듭니다.
<xml attribute="line 1
line 2" />
는, 속성의 문자 줄 바꿈이 (사양에 따라, 다시) 하나의 공간으로 정규화 - 따라서 : 개행 문자를 저장합니다
이러한 구현은 다음과 같이 인코딩되지 않은 그들은 잃어버린다.
이러한 구현에서는 속성에 개행을 저장 (및 유지!) 할 수 없습니다.
내가 만난 점 : XML은 유닉스 스타일의 개행 문자 (LF)를 사용합니다. 따라서 Windows 스타일의 개행 (CR + LF)을 저장하려면 속성에서 읽은 다음 개행을 변환하거나 개행을 이스케이프해야합니다. 출처 : http://www.w3schools.com/xml/xml_syntax.asp – Joe
@Joe : XML에서 유닉스 스타일의 개행 문자를 사용하는 정보는 어디서 얻습니까? 내가 볼 수있는 한 [사양] (http://www.w3.org/TR/xml/)은이를 제한하지 않습니다. – Tomalak
@Tomalak 해당 링크의 맨 아래로 스크롤하십시오. "XML Stores New Line as LF"라는 표제를 찾으십시오. 나는 C#의 XmlWriter와 타사 구성 요소 모두에서 CR 문자 (Unix와 같은 LF 만 남음)를 제거합니다. – Joe
엔티티를 사용하여 XML 속성의 개행을 나타낼 수 있습니다.
은 캐리지 리턴을 나타내는 데 사용할 수 있습니다. Windows 스타일 CRLF는
으로 표시 될 수 있습니다.
이것은 합법적 인 XML 구문입니다. 자세한 내용은 XML spec을 참조하십시오.
원유 대답은 할 수있다 :
XmlDocument xDoc = new XmlDocument();
xDoc.Load(@"Agenda.xml");
//make stuff with the xml
//make attributes value = "\r\n" (you need both expressions to make a new line)
string a = xDoc.InnerXml.Replace("
", "\r").Replace("
", "\n").Replace("><",">\r \n<");
StreamWriter sDoc = new StreamWriter(@"Agenda.xml");
sDoc.Write(a);
sDoc.Flush();
sDoc.Dispose();
이 뜻을 그냥 문자열 [XML 속성에서 줄 바꿈이 유효한 값은?] (HTTP의
가능 중복 보는 바와 같이 : // 유래. com/questions/449627/are-line-breaks-in-xml-attribute-values-valid) –
비슷한 질문에 대한 예제를 만들었습니다. http://stackoverflow.com/a/29782321/611007 – n611x007
관련 내용 : https ://stackoverflow.com/questions/260436/ - 관련 : https://stackoverflow.com/questions/449627/ - 관련 : https://stackoverflow.com/questions/1289524/ – n611x007