developer tip

XML 문자열을 XML 문서로

optionbox 2020. 12. 30. 08:05
반응형

XML 문자열을 XML 문서로


XML 문서 로 변환하고 문서의 태그를 구문 분석해야하는 문자열 에 전체 XML 문서 가 있습니다.


이 코드 샘플은 Jan Slama가 작성한 csharp-examples.net 에서 가져 왔습니다 .

XML 파일에서 노드를 찾으려면 XPath 표현식을 사용할 수 있습니다. XmlNode.SelectNodes 메서드는 XPath 문자열에서 선택한 노드 목록을 반환합니다. 메서드 XmlNode.SelectSingleNode는 XPath 문자열과 일치하는 첫 번째 노드를 찾습니다.

XML :

<Names>
    <Name>
        <FirstName>John</FirstName>
        <LastName>Smith</LastName>
    </Name>
    <Name>
        <FirstName>James</FirstName>
        <LastName>White</LastName>
    </Name>
</Names>

암호:

XmlDocument xml = new XmlDocument();
xml.LoadXml(myXmlString); // suppose that myXmlString contains "<Names>...</Names>"

XmlNodeList xnList = xml.SelectNodes("/Names/Name");
foreach (XmlNode xn in xnList)
{
  string firstName = xn["FirstName"].InnerText;
  string lastName = xn["LastName"].InnerText;
  Console.WriteLine("Name: {0} {1}", firstName, lastName);
}

사용 LINQ to XML의를

System.Xml.Linq에 대한 참조 추가

그리고 사용

XDocument.Parse(string xmlString)

편집 : 샘플 은 xml 데이터 (TestConfig.xml)를 따릅니다.

<?xml version="1.0"?>
<Tests>
  <Test TestId="0001" TestType="CMD">
    <Name>Convert number to string</Name>
    <CommandLine>Examp1.EXE</CommandLine>
    <Input>1</Input>
    <Output>One</Output>
  </Test>
  <Test TestId="0002" TestType="CMD">
    <Name>Find succeeding characters</Name>
    <CommandLine>Examp2.EXE</CommandLine>
    <Input>abc</Input>
    <Output>def</Output>
  </Test>
  <Test TestId="0003" TestType="GUI">
    <Name>Convert multiple numbers to strings</Name>
    <CommandLine>Examp2.EXE /Verbose</CommandLine>
    <Input>123</Input>
    <Output>One Two Three</Output>
  </Test>
  <Test TestId="0004" TestType="GUI">
    <Name>Find correlated key</Name>
    <CommandLine>Examp3.EXE</CommandLine>
    <Input>a1</Input>
    <Output>b1</Output>
  </Test>
  <Test TestId="0005" TestType="GUI">
    <Name>Count characters</Name>
    <CommandLine>FinalExamp.EXE</CommandLine>
    <Input>This is a test</Input>
    <Output>14</Output>
  </Test>
  <Test TestId="0006" TestType="GUI">
    <Name>Another Test</Name>
    <CommandLine>Examp2.EXE</CommandLine>
    <Input>Test Input</Input>
    <Output>10</Output>
  </Test>
</Tests>

C # 사용법 ...

XElement root = XElement.Load("TestConfig.xml");
IEnumerable<XElement> tests =
    from el in root.Elements("Test")
    where (string)el.Element("CommandLine") == "Examp2.EXE"
    select el;
foreach (XElement el in tests)
    Console.WriteLine((string)el.Attribute("TestId"));

이 코드는 다음 출력을 생성합니다. 0002 0006


사용하려는 문서 유형에 따라 XmlDocument.LoadXml또는 XDocument.Load.


Try this code:

var myXmlDocument = new XmlDocument();
myXmlDocument.LoadXml(theString);

ReferenceURL : https://stackoverflow.com/questions/6402596/xml-string-to-xml-document

반응형