프로젝트의 경우 TIA 포털 V14, PLC/siemens 환경에 연결된 공개 API로 작동하는 앱을 만듭니다.C# XML innertext 일부 찾기 및 바꾸기
이 응용 프로그램에서는 기본적으로 처음부터 XML 파일을 작성하고 있습니다. 이 작업을 수행하기 위해 System.XML을 사용하여 템플릿으로 복사 할 수있는 XML 블록이 포함 된 자체 XML 라이브러리 파일을 만들어 Tia 포털의 개체가 포함 된 화면을 생성 할 수있는 XML 파일을 만들 수 있습니다.
내가 지금 직면 한 문제는 요소 innertext의 조각을 찾아서 바꿀 수있는 방법을 찾지 못하거나 찾지 못하는 것입니다.
<VEG_Connection_Config>
<!-- Static Properties hold objects with properties that are always the same -->
<StaticProperties>
<!-- List of static objects -->
<GlobalLibraryObjects>
<!-- valve -->
<GlobalLibraryObject type="200" events="" properties="">
<Hmi.Screen.SymbolLibrary ID="2" CompositionName="ScreenItems">
<!-- valve -->
<AttributeList>
<AboveUpperLimitColor>255, 0, 0</AboveUpperLimitColor>
<BackColor>192, 192, 192</BackColor>
<BackFillStyle>Transparent</BackFillStyle>
<BelowLowerLimitColor>255, 255, 0</BelowLowerLimitColor>
<BlinkColor>0, 0, 255</BlinkColor>
<Enabled>true</Enabled>
<FillColorMode>Original</FillColorMode>
<FixedAspectRatio>false</FixedAspectRatio>
<Flashing>None</Flashing>
<FlashingOnLimitViolation>false</FlashingOnLimitViolation>
<Flip>None</Flip>
<ForeColor>0, 0, 0</ForeColor>
<Height>46</Height>
<Left>10</Left>
<ObjectName>DB_Stat_obj.$TAGNAME</ObjectName>
이것은 내 XML 라이브러리의 일부입니다. 아래쪽에 DB_Stat_obj라는 원시 텍스트를 포함하는 ObjectName이라는 요소가 있습니다. $ TAGNAME
$ TAGNAME은 내가 CSV 파일을 읽은 태그 이름으로 바꿀 부분입니다. 예를 들어 최종 결과는 DB_Stat_obj.1000P01이어야합니다.
누구나 System.XML을 사용하여 $ TAGNAME을 (를) 찾고 다른 것으로 교체하는 방법을 알고 있다면 지금 제 질문입니다./System.XML의 이루어진 것으로,
string keyword = "$TAGNAME";
var doc = XDocument.Load(screenLocation);
List<XElement> query = doc.Descendants().
Where(x => !x.HasElements &&
x.Value.IndexOf(keyword, StringComparison.InvariantCultureIgnoreCase) >= 0).ToList();
query.ForEach(n => n.Value = n.Value.Replace(keyword, objectName));
doc.Save(screenLocation);
하지만 내 전체 응용 프로그램을 고려 :
나는 System.XML.LINQ를 사용하여 내가 파일을 통해 분석하고이 코드를 사용하여 그냥 비트를 대체 할 수 있음을 알고있다 XmlDocument이 코드를 사용할 수 없습니다. XDocument를 XDocument로 바꾸어 $ TAGNAME을 바꾸고 다시 변환하려고 시도했지만 그 중 하나도 작동하지 않았습니다. 나는 다른 사람이에 awnser을 가지고 희망 올바른 방향으로 날 지점 수
public static XmlDocument ToXmlDocument(this XDocument xDocument)
{
var xmlDocument = new XmlDocument();
using (var xmlReader = xDocument.CreateReader())
{
xmlDocument.Load(xmlReader);
}
return xmlDocument;
}
public static XDocument ToXDocument(this XmlDocument xmlDocument)
{
using (var nodeReader = new XmlNodeReader(xmlDocument))
{
nodeReader.MoveToContent();
return XDocument.Load(nodeReader);
}
}
아래 변환 코드입니다.
TL; 당신이 사용할 수 있도록 내가
// 제론
를 찾을에서 System.Xml에게감사를 사용하여 innerText와의 일부를 대체 어떻게 찾을 수 있습니까
그렇지 않습니다. InnerText에'string'을 사용하고 그 문자열을 조작하십시오. –