programing

XmlDocument를 사용하여 XML 특성 읽기

telecom 2023. 10. 22. 19:24
반응형

XmlDocument를 사용하여 XML 특성 읽기

C#의 XmlDocument를 사용하여 XML 특성을 읽으려면 어떻게 해야 합니까?

다음과 같은 XML 파일이 있습니다.

<?xml version="1.0" encoding="utf-8" ?>
<MyConfiguration xmlns="http://tempuri.org/myOwnSchema.xsd" SuperNumber="1" SuperString="whipcream">
    <Other stuff />
</MyConfiguration> 

XML 특성 SuperNumber 및 SuperString을 어떻게 읽습니까?

현재 XmlDocument를 사용하고 있는데 XmlDocument의 값을 사용하는 사이에 값이 표시됩니다.GetElementsByTagName()정말 잘 먹히는군요.속성을 얻는 방법을 모르겠어요?

XmlNodeList elemList = doc.GetElementsByTagName(...);
for (int i = 0; i < elemList.Count; i++)
{
    string attrVal = elemList[i].Attributes["SuperString"].Value;
}

XPath에 대해 알아봐야 합니다.일단 사용을 시작하면 목록을 반복하는 것보다 훨씬 더 효율적이고 쉽게 코딩할 수 있습니다.또한 원하는 것을 직접 얻을 수도 있습니다.

그러면 코드는 다음과 같습니다.

string attrVal = doc.SelectSingleNode("/MyConfiguration/@SuperNumber").Value;

XPath 3.0은 2014년 4월 8일에 W3C 권장 사항이 되었습니다.

XmlDocument 대신 XDocument로 마이그레이션한 다음 해당 구문을 원할 경우 Linq를 사용할 수 있습니다.다음과 같은 경우:

var q = (from myConfig in xDoc.Elements("MyConfiguration")
         select myConfig.Attribute("SuperString").Value)
         .First();

Xml 파일 books.xml을 가지고 있습니다.

<ParameterDBConfig>
    <ID Definition="1" />
</ParameterDBConfig>

프로그램:

XmlDocument doc = new XmlDocument();
doc.Load("D:/siva/books.xml");
XmlNodeList elemList = doc.GetElementsByTagName("ID");     
for (int i = 0; i < elemList.Count; i++)     
{
    string attrVal = elemList[i].Attributes["Definition"].Value;
}

지금이다,attrVal의 가치가 있습니다.ID.

XmlDocument.Attributes아마도?(GetNamed 방법이 있는 경우)항상 속성 수집을 반복했지만, 원하는 작업을 수행할 가능성이 있는 항목)

예제 문서가 문자열 변수에 있다고 가정합니다.doc

> XDocument.Parse(doc).Root.Attribute("SuperNumber")
1

XML에 네임스페이스가 포함되어 있으면 다음을 수행하여 속성의 값을 얻을 수 있습니다.

var xmlDoc = new XmlDocument();

// content is your XML as string
xmlDoc.LoadXml(content);

XmlNamespaceManager nsmgr = new XmlNamespaceManager(new NameTable());

// make sure the namespace identifier, URN in this case, matches what you have in your XML 
nsmgr.AddNamespace("ns", "urn:oasis:names:tc:SAML:2.0:protocol");

// get the value of Destination attribute from within the Response node with a prefix who's identifier is "urn:oasis:names:tc:SAML:2.0:protocol" using XPath
var str = xmlDoc.SelectSingleNode("/ns:Response/@Destination", nsmgr);
if (str != null)
{
    Console.WriteLine(str.Value);
}

XML 네임스페이스에 대한 자세한 내용은 여기와 여기를 참조하십시오.

언급URL : https://stackoverflow.com/questions/933687/read-xml-attribute-using-xmldocument

반응형