2012-08-08 2 views
1

상당히 많은 양의 XML이 포함 된 문자열이 있는데 실제로는 XML (word.xml) 문서를 설명합니다. 간단히 문자열의 일부를 빈 문자열로 교체하고 효과적으로 문자열에서 제거하려고합니다. 솔직히 들리지만 나는 예상 한 결과를 얻지 못하고 있습니다. 여기XML에서 간단한 문자열 바꾸기

이 그냥 처음 10 줄되면, XML의 일부 모습입니다 :

<w:body xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"> 
    <w:p w:rsidR="00CB3A3E" w:rsidP="00257CF7" w:rsidRDefault="008C1E91"> 
     <w:pPr> 
      <w:pStyle w:val="Heading-Title" /> 
     </w:pPr> 
     <w:r> 
      <w:t>References</w:t> 
     </w:r> 
    </w:p> 
    <w:sdt> 

나는이 문자열에 말했듯이. 간단히 <w:t>References</w:t>을 빈 문자열로 바꾸려고합니다. 나는 이렇게하고있다 :

//xmlBody is the string that is holding the xml 
xmlBody.Replace("<w:t>References</w:t>", " "); 

이것은 작동하지 않는다. 내가 이것을 할 때, 문자열은 변경되지 않는다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 모든 조언을 주시면 감사하겠습니다.

+1

올바른 XML 객체를 사용하여 XML을 조작하십시오. 먼저이 방법으로 invalud XML을 생성하지 않고 두 번째로 이 텍스트 또는 유사한 텍스트의 개별 라인에있을 수 있다는 것을 알게되면 "정규 표현식으로 XML을 구문 분석/검색하는 방법"을 묻지 않을 것입니다. –

답변

3
xmlBody = xmlBody.Replace("<w:t>References</w:t>", ""); 

바꾸기 기능은 소스 문자열을 변경하지 않습니다. 변경된 내용으로 새로운 문자열을 반환합니다. 실제로 C# 문자열은 변경할 수 없습니다. documentation을 확인해 보면 불변이라고합니다.

2

하려면 string.replace은 교체와 함께 새로운 문자열을 반환 ... 그것은

인라인 교체가 아닌 교체

xmlBody = xmlBody.Replace("<w:t>References</w:t>", " "); 
1

시도 원래 문자열을 변경하지 않고, 새로운 문자열을 반환 만든.

3

C#에서는 문자열을 변경할 수 없습니다. 일단 만들어지면 변경할 수 없습니다. Replace은 string의 새 인스턴스를 반환합니다. 따라서, 당신은 반환 값을 잡을 필요가하십시오 (!) 참고로

xmlBody = xmlBody.Replace("<w:t>References</w:t>", " "); 

, 그것은 정규 표현식으로 XML 기반의 문자열을 구문 분석하는 것이 좋습니다 간주되지 않으며, 너무 깨지기 때문에. 나중에 요소를 제거하려면 XDocument 또는 일부 사용을 고려하십시오.