programing

XmlNode 값과 InnerText

nasanasas 2020. 10. 30. 08:12
반응형

XmlNode 값과 InnerText


URL로 가득 찬 XML을 사용하여 학교용 ping 응용 프로그램을 만들고 있습니다. 나는 XmlNode.Valuenull로 인해 한 시간을 잃었습니다 .

그런 다음로 변경했고 InnerText잘 작동했습니다.

이제 MSDN은 .Value가 노드의 값을 InnerText반환하고 노드와 모든 자식 노드의 연결된 값을 반환 한다고 말했기 때문에 차이점이 무엇인지 궁금 합니다.

누군가 나를 위해 이것을 설명해 주시겠습니까?

<sites>
<site>
    <url>www.test.be</url>
    <email>test@test.be</email>
</site>
<site>
    <url>www.temp.be</url>
    <email>temp@temp.be</email>
</site>
<site>
    <url>www.lorim.ipsum</url>
    <email>interim.address@domain.com</email>
</site></sites>

예를 들어 XML이 <Foo>Bar</Foo>"Bar" 와 같은 경우 실제로 별도의 노드 인 XmlText노드 (에서 하위 클래스로 분류 됨 XmlNode) 간주 됩니다 . Value해당 XmlText노드 속성은 "Bar"입니다.

"Foo"는 XmlElement(또한에서 하위 클래스로 분류 됨 XmlNode) 간주됩니다 . XmlNode.Value노드 유형에 따라 다른 것을 반환합니다. 항상 노드에 대해 반환 되는 이 표참조하십시오 .ValuenullElement

InnerText푸 노드가 정상으로 돌아 "바"가 (이 경우, 단지 하나 개의 아이들의 값을 연결하기 때문에의 XmlText노드).


비슷한 상황이있었습니다. 내가 한 것은 현재 노드의 첫 번째 자식을 선택하고 그것이 XMLtext인지 확인한 다음 그 값을 표시하는 것입니다.

XmlNodeList xNList = xDOC.SelectNodes("//" + XMLElementname);

foreach (XmlNode xNode in xNList)
{
    if (xNode.ChildNodes.Count == 1 && 
        xNode.FirstChild.GetType().ToString() == "System.Xml.XmlText")
    {
        XMLElements.Add(xNode.FirstChild.Value);
    }
    else
    {
        XMLElements.Add("This is not a Leaf node");
    }
}

XML 사양은 용어와 어떤 유형의 XML 객체를 구성하는지에 대해 매우 까다 롭습니다. 언급했듯이 element가치가 없습니다. 이것은 attribute(그리고 아마도 몇 가지 다른 노드 유형) 에만 attribute해당 됩니다.elementname='value'

혼란 스럽다고 생각되면 자식과 하위 항목 또는 루트 노드와 문서 요소의 차이점을 확인하십시오!


에 관련하여 MSDN , Value재산 XmlNodeType.Element반환 :

없는. XmlElement.InnerText 또는 XmlElement.InnerXml 속성을 사용하여 요소 노드의 값에 액세스 할 수 있습니다.


url 요소가 리프 노드이므로 InnerText (또한 InnerXml) 속성에는 요소 값이 포함됩니다. 요소 노드의 경우 msdn 설명서 https://msdn.microsoft.com/en-us/library/system.xml.xmlnode.value(v=VS.110).aspx에 표시된대로 value 속성은 null이됩니다 .

참고 URL : https://stackoverflow.com/questions/7877609/xmlnode-value-vs-innertext

반응형