在该接口的文档中,它声明文本节点都返回"#text"作为其名称而不是实际的标记名称.但是对于我正在做的事情,标签名称是必要的.
// I'm using the following imports
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
// In the .xml input file
<country>US</country> // This is a "text node" .getTextContent()
// returns "US", I need "country" and .getNodeName()
// only returns "#text"
Run Code Online (Sandbox Code Playgroud)
我怎么能访问标签名称?这必须是某种可能的,我不介意一个hackish解决方案.
文档:
http://www.w3schools.com/dom/dom_nodetype.asp
http://www.w3.org/2003/01/dom2-javadoc/org/w3c/dom/Node.html
谢谢.
标题说明了一切...
是否有可能获得来自行号/位置System.Xml.XmlNode与工作时System.Xml.XmlDocument?
我想要这些信息,以便我可以通知用户他们需要在 Xml 文件中查找特定信息的位置。我见过与XmlReaderon SO相关的类似问题,但没有真正回答我的问题。
我想我可以在 xml 文件中搜索OuterXml我感兴趣的节点,但这似乎很糟糕,如果该信息多次出现在文件中怎么办?一定会有更好的办法?
更新: 我正在使用以下方法加载我的 xml 文件:
xmlDoc = new XmlDocument();
xmlDoc.PreserveWhitespace = true;
xmlDoc.Load(filename);
Run Code Online (Sandbox Code Playgroud) 我想为移动应用程序开发即时消息,如whatsapp,nodejs作为我的后端.我已经阅读了XMPP协议并阅读了xmpp.org文档.
我提到了这个链接,我能够构建一些基本的XMPP功能,如创建和消息传递用户.但我仍然无法在nodejs中实现XMPP的完整功能.
那么:是否有任何节点js libaries可用于构建xmpp协议的完整功能,例如asmack?或者,如何通过XML向XMPP服务器发送调用?
我遇到了一个奇怪的情况,希望有一个比我了解得更多的人可以帮助我解决这个问题。
我正在将图像插入Xml文档中,以便可以使用Microsoft Word打开它。作为其中的一部分,我需要添加一个映射到包含图像的元素的Xml'Relationship'。直截了当。
我添加的节点应如下所示:
<Relationship Id="rId6" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="media/image1.png" />
Run Code Online (Sandbox Code Playgroud)
但是,在最终的.doc文件中,该行显示如下:
<Relationship Id="rId6" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="media/image1.png" xmlns="" />
Run Code Online (Sandbox Code Playgroud)
即它现在具有一个空的xmlns =“”属性。
这足以让Word相信文档已损坏并拒绝打开。如果我手动打开文件并删除该属性,则会打开文件。
显然,我想以编程方式删除它:-)所以我找到了父节点。这是我的理解有些模糊的地方。我相信OuterXml元素包含节点及其所有子元素的内容,而InnerXml仅包含子元素。
这就是我所看到的(请注意,转义字符是因为我是从Visual Studio的文本查看器中剪切下来的)。
外层Xml:
"<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">
<Relationship Id=\"rId3\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/webSettings\" Target=\"webSettings.xml\" />
<Relationship Id=\"rId2\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings\" Target=\"settings.xml\" />
<Relationship Id=\"rId1\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles\" Target=\"styles.xml\" />
<Relationship Id=\"rId5\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme\" Target=\"theme/theme1.xml\" />
<Relationship Id=\"rId4\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable\" Target=\"fontTable.xml\" />
<Relationship Id=\"rId6\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\" Target=\"media/image1.png\" xmlns=\"\" />
</Relationships>"
Run Code Online (Sandbox Code Playgroud)
InnerXml:
"<Relationship Id=\"rId3\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/webSettings\" Target=\"webSettings.xml\" xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\" />
<Relationship Id=\"rId2\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings\" Target=\"settings.xml\" xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\" />
<Relationship Id=\"rId1\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles\" Target=\"styles.xml\" xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\" />
<Relationship Id=\"rId5\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme\" Target=\"theme/theme1.xml\" …Run Code Online (Sandbox Code Playgroud) 是否有更好的方法来查找XML节点是否存在(在XSLT中)而不是使用:
<xsl:choose>
<xsl:when test="...........">body node exists</xsl:when>
<xsl:otherwise>body node missing</xsl:otherwise>
</xsl:choose>
Run Code Online (Sandbox Code Playgroud) 有没有一种简单的方法来比较两个XML结构,以确定它们是否具有相同的结构和数据?
我有一个返回XmlNode的函数,我正在尝试为它编写单元测试.我将正确的XML结果存储在一个文件中.在测试中,我将文件加载到XmlDocument中,找到正确的XmlNode并与函数的结果进行比较.直接比较不起作用(如预期的那样),而且InnerXml也不起作用.我正在考虑从InnerXml中删除所有空格并比较它,或者编写我自己的比较来走树,但我不喜欢这两个选项.
我想知道我怎样才能测试这种情况:
<foo>
<bla1>xxx</bla1>
<bla2>yyy</bla2>
<bla3>zzz</bla3>
</foo>
Run Code Online (Sandbox Code Playgroud)
在while(reader.Read())中,当我在foo和bla1,bla2,bla3时放入XmlNodeType.Element ...当放入xxx,yyy,zzz中的.TextElement时.但是我可以测试bla的内部是否有文本值?
非常感谢
佩德罗杜索
我正在尝试使用xml数据在转发器中放置转发器.我让它完全按照我的意愿工作,但我使用的方法为每个转发器重新加载数据.我想我需要扮演一个XmlNode,但我会说实话 - 我不知道从哪里开始.
这是我的代码 - 如果可能的话,我想保留代码中的所有内容.
<script runat="server">
Public doc As New XmlDocument()
Public Sub Page_Load(ByVal Sender As Object, ByVal E As EventArgs)
If Not Page.IsPostBack then
doc.Load(Server.MapPath("~/myxml/bookstore.xml"))
Dim nodes As XmlNodeList = doc.SelectNodes("Bookings/Booking[@CLIENT_NO='SA33762']")
rpMyRepeater.DataSource = nodes
rpMyRepeater.DataBind()
End If
End Sub
Protected Sub itemDB(ByVal s As Object, ByVal e As RepeaterItemEventArgs)
If e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType = ListItemType.AlternatingItem Then
Dim rpt As Repeater = CType(e.Item.FindControl("books"), Repeater)
If Not (rpt Is Nothing) Then
doc.Load(Server.MapPath("~/myxml/bookstore.xml"))
Dim nodes2 As XmlNodeList = …Run Code Online (Sandbox Code Playgroud) 我希望有人能指出我在这里遗漏的明显事物.我觉得我已经这样做了一百次,并且由于某种原因,今晚,这种行为让我陷入了困境.
我正在从公共API读取一些XML.我想从某个节点('body'中的所有内容)中提取所有文本,其中还包括各种子节点.简单的例子:
<xml>
<metadata>
<article>
<body>
<sec>
<title>A Title</title>
<p>
This contains
<italic>italics</italic>
and
<xref ref-type="bibr">xref's</xref>
.
</p>
</sec>
<sec>
<title>Second Title</title>
</sec>
</body>
</article>
</metadata>
</xml>
Run Code Online (Sandbox Code Playgroud)
所以最终我想遍历所需节点内的树(再次,'body')并提取其自然顺序中包含的所有文本.很简单,所以我只写了这个小的Groovy脚本......
def xmlParser = new XmlParser()
def xml = xmlParser.parseText(rawXml)
xml.metadata.article.body[0].depthFirst().each { node ->
if(node.children().size() == 1) {
println node.text()
}
}
Run Code Online (Sandbox Code Playgroud)
...继续炸毁"没有方法签名:java.lang.String.children()".所以我在想自己"等等,什么?我会发疯吗?" Node.depthFirst()应该只返回一个Node的List.我添加了一个'instanceof'检查,果然,我得到了Node对象和String对象的组合.具体而言,不在同一行中的实体内的行将作为String返回,即"This contains"和"and".其他一切都是节点(如预期的那样).
我可以轻松解决这个问题.然而,这似乎不是正确的行为,我希望有人可以指出我正确的方向.
我喜欢XML
<Categories>
<category name="a">
<SubCategory>1</SubCategory>
<SubCategoryName>name1</SubCategoryName>
</category>
<category name="b">
<SubCategory>2</SubCategory>
<SubCategoryName>name2</SubCategoryName>
</category>
</Categories>
Run Code Online (Sandbox Code Playgroud)
我如何获得的值<SubCategoryName>从<category name="a">?